ROS与Vrep

在机器人领域,仿真一般来说包括运动学仿真,动力学仿真,有限元仿真。运动学仿真的功能是观察机器人各关节运动范围,机器人工作范围等可视化功能。动力学仿真确定机械臂力平衡,最高运动速度确定等。有限元仿真主要用来计算负载或者重力变形,也可用计算机器人温度场分布。

v-rep: 动力学仿真 跨平台 多语言
prescan: 无人驾驶仿真
gym: 强化学习仿真环境
openRAVE: 运动规划相关的运动学仿真,主要用于运动规划算法的开发。
gazebo: 和 ROS集成比较方便,类似的教程较多
openGL: 视觉传感器仿真
SimTrack : 基于仿真的大量目标的跟踪和位姿估计

ROS

   ros被称为机器人操作系统,其实ROS充当的是通信中间件的角色,即在已有操作系统的基础上搭建了一整套针对机器人系统的实现框架。ROS还提供一组实用工具和软件库,用于维护、构建、编写和执行可用于多个计算平台的软件代码。

  值得一提的是,ROS的设计者考虑到各开发者使用的开发语言不同,因此ROS的开发语言独立,支持C++,python等多种开发语言。因此,除了官方提供的功能包之外,ROS还聚合了全世界开发者实现的大量开源功能包,如思岚科技(SLAMTEC)就发布了针对其自主研发的激光雷达RPLIDAR的ROS功能包rplidar_ros。这些开源功能包与ROS一起构成了强大的开源生态环境。

  ROS的系统结构设计也颇有特色,ROS运行时是由多个松耦合的进程组成,每个进程ROS称之为节点(Node),所有节点可以运行在一个处理器上,也可以分布式运行在多个处理器上。在实际使用时,这种松耦合的结构设计可以让开发者根据机器人所需功能灵活添加各个功能模块。

  例如,在一个支持SLAM功能的移动机器人中,激光数据采集和里程数据获取分别由两个node实现,用于感知环境;SLAM算法运行在另一个node中,用于处理传感器数据,绘制地图;SLAM节点和数据采集节点之间采用topics方式通信。当新增一个摄像头模块时,仅需在现有结构里增加一个新的视频节点,让其与SLAM节点采用topics方式通信即可,另外两个功能节点不需任何改动。

  ROS构建的室内地图

  与其他开源产品(Linux,GCC等)一样,ROS具有优良的开源基因,松耦合设计方法,可扩展的软件结构,功能复用思想,极大降低了机器人领域的进入门槛,让开发者无需像前人一样走过众多弯路,掌握多种知识后才能开始实现其机器人设计的梦想。开发者可以用ROS的基础框架配合选定的功能包快速实现系统原型,从而让开发人员将更多时间用于核心算法的开发改进上。用户也可以单独选用某些功能包,将其集成在已有产品中,实现特定功能。

  ROS的缺陷与不足

  对于机器人厂家来说,采用ROS进行开发,更多的希望借助系统实现机器人的导航、定位与路径规划,这其中就要依靠SLAM算法(simultaneous localization and mapping,即时定位与地图构建)。

  但作为一个开源项目,ROS也存在一些问题。例如,ROS因为将功能分布在各个节点之中,节点间基于消息机制通信,通讯部分消耗了很多系统资源。尤其是当所有节点位于同一个处理器时,ROS仍然一直执行相应的消息分发,节点间的数据传递通过内存复制,大量的系统资源都浪费在通讯上,使得系统必须选用高性能的处理器和存储系统以弥补损耗。换句话说,利用ROS来实现SLAM,需要配备性能优越的硬件设备,这对于一些小型化嵌入式平台,尤其是实际的机器人产品里,其对计算资源、存储空间的消耗会使成本大幅上升。

  除了ROS本身系统设计的局限性外,利用ROS实现SLAM需要深入的调整优化,需要耗费大量人力与时间成本。更为重要的是,针对具体的机器人产品,如扫地机器人,还需要独特的贴边清扫、折回清扫、多房间自主导航等功能,目前已有的ROS系统,只能实现简单的建图,无法满足扫地机器人的实际需要。

Vrep

Vrep是一款动力学仿真软件,主要定位于机器人仿真建模领域,可以利用内嵌脚本、ROS节点、远程API客户端等实现分布式的控制结构,是非常理想的机器人仿真建模的工具。控制器可以采用C/C++, Python, Java, Lua, Matlab, Octave or Urbi等语言实现。目前大家可能更熟知的是Adams这款建模软件,的确Adams有很多的参考资料,而且国内推广的比较好,但是如果你稍微了解一下Vrep的话,就会深深地被他的亲和的画面和灵活的结构所吸引

  1. V-REP提供了一个统一的框架,它结合了许多强大的内部和外部库,这些库通常可用于机器人模拟。这包括动态模拟引擎,前向/反向运动学工具,碰撞检测库,视觉传感器模拟,路径规划,GUI开发工具以及许多常见机器人的内置模型。

  2. V-REP具有高度可扩展性。V-REP开发人员提供了一个API,允许用户编写添加新功能的自定义插件。您可以将Lua脚本直接嵌入到模拟场景中,例如,处理模拟传感器数据,运行控制算法,实现用户界面,甚至将数据发送到物理机器人。它们还提供了一个远程API,允许用户开发许多编程语言的独立应用程序,这些应用程序能够将数据传入和传出正在运行的V-REP模拟。

  3. V-REP是跨平台的,主要是开源的,并提供免费的教育许可。

我个人认为ROS比较适用于用现有模型对核心算法的研究与改进甚至研发,但不利于机器人结构的设计以及自主研发的机器人的具体动作研究,当需要定义自主研发的机器人的行动,步态以及结构属性的研究时,ROS就不太适用了。

在自主研发的机器人上V-REP由很大的优势,界面化的操作,内嵌的多种模型,简单的关联操作,便利的模型设计,简易的动作控制脚本文件这都体现了V-REP在机器人结构属性的研究上的优势。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ROS(机器人操作系统)是一个用于开发机器人软件的框架,而STM32是一款常见的嵌入式微控制器。它们可以进行通信以实现机器人系统的控制和数据传输。 要实现ROS与STM32的通信,通常有两种方式:串口通信和ROS网络通信。 一种常见的方式是通过串口连接ROS主机和STM32。ROS主机可以使用基于Linux系统的计算机,如Ubuntu等。使用ROS提供的串口通信库,可以在ROS主机上编写节点程序,通过串口与STM32进行数据交换。在ROS主机上,可以将STM32作为一个外设设备接入ROS系统,通过串口读取STM32发送的数据,并将ROS主机的控制指令发送给STM32。 另一种方式是通过ROS网络通信。在STM32上运行一个ROS节点,该节点通过TCP/IP协议与ROS主机上的其他ROS节点进行通信。ROS节点可以通过STM32上的网卡或Wi-Fi模块连接到ROS主机所在的局域网。在ROS主机上,可以使用ROS提供的网络通信库与STM32节点进行通信,发送控制指令或接收传感器数据。 不论是串口通信还是网络通信,ROS与STM32的通信都需要定义消息格式。可以根据具体的需求,定义自己的ROS消息类型,包括控制指令、传感器数据等。在ROS主机上,可以使用ROS消息库来解析和处理这些消息。 总之,通过串口通信或ROS网络通信,可以实现ROS与STM32的通信,实现机器人系统的控制和数据传输。这种通信方式可以用于各种机器人应用,如无人车、机器人臂等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值