机器人导航学习历程(二)move_base

move_base

  move_base节点位于导航框架正中心,可以理解为一个强大的路径规划器,在实际的导航任务中,只需要启动这一个node,并且给他提供数据,就可以规划出路径和速度。在navigation这个问题的角度,map是作为已知信息,默认是已经解决的。

在这里插入图片描述

  下图表示了move_base的组成部分。

在这里插入图片描述

  中间这个节点就是move_base,它要正常工作,首先需要设置好三个接口,分别叫做Base Local PlannerBase Global PlannerRecovery Behavior, 在ROS里,实际的路径规划一般就是分为这么三部分。

  Base Local Planner是全局规划,负责轨迹的大方向,用来躲避静态障碍物。Base Global Planner是局部路径规划,负责具体的运动细节,用来躲避移动中的障碍物,也就是动态避障。

  做好了这两部分路径规划,机器人就可以正常的运动了,但有些时候,机器人也会陷入一些运动情况,比如碰撞到障碍物,那它就会有一些恢复动作,Recovery Behavior就属于异常动作处理的方法。

  针对这三个接口,每一个ROS都给我们提供了一些插件,供用户来选择。比如局部路径规划,ROS提供了两个插件,这每一个插件,都是不同算法的实现,dwa_local_planner就是base_local_planner的重写版本,对动态窗口的速度采样更好,其实就是不同的package,在navigation metapackage你都能找到这些package。

  我们可以看出,move_base是navigation的逻辑核心,是核心节点,之所以称之为核心,是因为它在导航的任务中 处于支配地位,其他的一些package都是它的插件。

base_local _planner插件

  • base_local_planner实现了Trajectory Rollout和DWA两种局部规划算法
  • dwa_local_planner可以看作是base_local_planner的改进版

base_global _planner插件

  • parrot_planner实现了较简单的全局规划算法
  • Navfn实现了Dijkstra和A*全局规划算法
  • global_planner可以看作navfn的改进版

recovery_behavior插件

  • clear_costmap_recovery实现了清楚代价地图的恢复行为
  • rotate_recovery实现了旋转的恢复行为
  • move_slow_and_clear实现了缓慢移动的恢复行为

  需要说明一下,这里插件的概念并不是我们抽象的描述,而是在ROS里catkin编译系统能够认出的,也就是说插件不需要提前链接到ROS的程序上,只需在运行时加载插件就可以调用其中的功能。

nav_core

  nav_core这个package定义了这三个接口,其实就是定义了三个接口类,然后各自继承和实现了这些功能。

在这里插入图片描述

  • BaseGlobalPlanner是全局导航的接口,规定一个功能函数makePlan,给定起始跟目标,输出路径(一系列pose)走过去;
  • BaseLocalPlanner规定了一个核心函数computeVelocityCommands,就是计算局部地图内的下一步控制指令(线速度,角速度);
  • RecoveryBehavior,规定一个runBehavior,在小车卡住情况下执行运动恢复,回到正常的导航状态。

  在ROS navigation中,move_base提供的是框架,通过对nav_core中规定的planner与 recovery_behavior的基类的接口进行调用来实现。这样做可以将框架与具体的实现方法隔离开来。而具体采用的方法由pluginlib 根据不同参数导入,这样的实现方法使得navigation的可定制性大大增加。

### 焊接机器人机械结构设计与原理 焊接机器人是一种用于自动化焊接过程的机械设备,其核心在于通过精确的运动控制完成高质量的焊接作业。以下是关于焊接机器人机械结构设计与原理的关键点: #### 1. 自由度的设计 焊接机器人的自由度决定了其能够执行的任务范围和灵活性。通常情况下,焊接机器人具有至少5个自由度以满足复杂的焊接需求[^1]。这些自由度分别对应于基座旋转、大臂伸缩、腰部转动以及其他关节的动作。 #### 2. 结构组成 焊接机器人的主要部件包括底座、大臂、小臂、手腕以及末端执行器(即焊枪)。每部分都经过精心设计以确保稳定性、刚性和精度: - **底座**:提供整个装置的基础支撑并允许水平方向上的回转动作。 - **大臂/小臂**:负责调整位置到目标区域;长度比例需合理配置以便覆盖所需的工作空间。 - **手腕组件**:实现多角度倾斜及翻转功能,从而适应不同方位的焊缝路径。 - **末端执行机构——焊枪**:直接参与实际焊接操作的部分,它必须具备良好的热传导性能和耐用性。 #### 3. 控制系统集成 除了物理硬件之外,还需要一套完善的控制系统来进行实时监控与反馈调节。现代焊接机器人往往采用伺服电机驱动各关节,并借助传感器获取当前状态参数,再利用先进的算法计算下一步指令发送给各个轴向马达完成指定轨迹运行[^3]。 #### 4. 应用背景与发展历程 自上世纪八十年代以来,在国家政策扶持下,中国的工业机器人产业迎来了快速发展阶段。“七·五”期间重点突破了几种典型类型的工业机器人产品原型样机的研发制造难题;而进入九十年代以后,则进一步加强了对于智能化程度更高的新一代产品的探索研究力度[^2]。 #### 5. 特殊工艺考虑 - 搅拌摩擦焊实例 作为一项新兴高效连接方式代表之一,“搅拌摩擦焊(FSW)”因其独特的加工机制而在航空航天等领域备受青睐。针对此类特殊应用场景下的专用设备—C型框架式FSW机床进行了详细的论述说明,其中包括但不限于整套装备布局安排原则介绍及其关键零部件选型依据等方面内容阐述[^4]。 ```python class WeldingRobot: def __init__(self, base_rotation=0, large_arm_angle=90, small_arm_extension=50): self.base_rotation = base_rotation # 基础旋转角度 (degrees) self.large_arm_angle = large_arm_angle # 大臂倾角 (degrees) self.small_arm_extension = small_arm_extension # 小臂延伸距离(cm) def move_to_position(self, target_x, target_y, target_z): """ 计算到达特定坐标所需的关节角度 """ pass def start_welding(self): """ 开始焊接程序 """ print("Starting welding operation...") robot = WeldingRobot() robot.start_welding() ``` 上述代码片段展示了简化版焊接机器人类定义方法论的一个例子,其中包含了初始化函数设置初始条件以及两个重要成员方法用来描述移动至某一点的过程还有启动焊接流程的行为逻辑。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与你如初见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值