遨博协作机器人ROS开发 - 机械臂自主避障

本文介绍了如何在ROS的MoveIt!环境中利用RViz图形界面和Python编程实现机械臂的自主避障功能。通过添加虚拟障碍物,机械臂能够规划避免碰撞的路径。首先,在RViz中演示了通过拖拽方式添加和调整障碍物的位置,然后展示了通过Python程序动态添加障碍物的过程。最后,提出了通过编程方式实现物体抓取、运输和放置的完整避障任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、简介

二、环境版本

三、学习目标

 五、任务实施

六、任务拓展

七、课堂小结

八、课后练习


一、简介

大家好,欢迎关注遨博学院带来的系列技术分享文章(协作机器人ROS开发),今天我们来学习一下“机械臂自主避障”。

二、环境版本

  • 主机系统版本:Windwos10 64位
  • 处理器型号:Intel-i7
  • 虚拟机版本:VMware Workstation 16 Pro
  • 虚拟机系统:Ubuntu 18.04.6 LTS
  • ROS版本:Melodic

三、学习目标

 四、知识储备

下面开始介绍本节内容的知识点:

1.添加障碍物的方法

在MoveIt!中,可以添加虚拟障碍物,机械臂在规划时即可主动避障进行规划路径,使用这种方法,可以将机器人在真实物理空间的障碍物进行建模,并导入ROS的虚拟空间,这样在进行真实控制时,MoveIt!可以规划防止碰撞的路径。

在MoveIt!中具有一个规划场景监听器的模块结构,可以用来检测机器人场景中是否存在障碍物。障碍物有几种方式可以告诉监听器:

(1)通过RViz界面的形式添加;

(2)通过程序(C++/Python)编程进行添加;

(3)通过机器人的外部传感器,例如通过realsense深度相机实时检测到的信息加入到场景中。

本节主要介绍前两种方法的使用。

 2.RViz中添加障碍物

(1)如下图所示,在Planing选项卡中,将Goal State选择到home,并点击Plan & Execute按钮,等待机械臂运动到初始位姿。

(2)如下图所示,选择Scene Objects选项卡,在下拉列表中选择用来添加的物体,可以添加已有模型或者自行使用SolidWorks构建的模型,这里选择Box障碍物,然后点击绿色加号按钮,即可在Current Sense Objects列表中看到增加的障碍物,并且在右侧三维可视化窗口也可以看到绿色障碍物。

(3)如下图所示,通过拖拽右侧绿色障碍物的红绿蓝三维箭头坐标,可以将障碍物拖拽到下图的位置,这里的位置不是固定的,为了方便观察现象,放置到机械臂末端的下方,并点击publish按钮。

(4)如下图所示,选择Planning选项卡,在右侧三维界面拖拽机械臂末端蓝色小球到障碍物下方,并且不能使机械臂碰到障碍物,如果碰到障碍物,机械臂会变为红色。

(5)如下图所示,在Planning选项卡中,选择Plan & Execute按钮,开始规划路径并运动,机械臂即可自主避障进行路径规划。

 3.Python程序添加障碍物

分别在两个终端输入如下指令,启动MoveIt!并运行自主避障的Python程序,如下图所示,可以在MoveIt!界面中,看到机械臂会先回到初始位姿,然后末端增加一个圆柱形物体,模拟抓取物体完成,并在空间中新增一个绿色的桌子,用来模拟障碍物,机器人运动到指定位置和返回的过程中会计算轨迹,避免机械臂和抓取的物体碰撞到桌子。

 五、任务实施

接下来,我们来看下在RViz中添加障碍物与编程添加障碍物两种方式的自主避障演示

遨博协作机器人ROS开发 - 机械臂自主避障

六、任务拓展

导入自定义障碍物模型

通过RViz界面操作与编程两种方式,导入在SolidWorks中绘制的自定义复杂障碍物模型,观察自主避障的效果。

七、课堂小结

下面我们进行课堂小结:

MoveIt!运动规划能够完成自主避障功能,可以通过RViz图形化界面与编程的方式实现,在真实开发中,可以放置与真实环境相同的障碍物,避免真实机械臂发生碰撞。

八、课后练习

最后给大家布置一道课后习题

通过编程的方式实现向RViz中添加障碍物,包括抓取台、放置台、被抓物体,实现机械臂物体抓取、运输、放置的全过程。

 在接下来的ROS课程中,我们会讲解遨博机械臂复杂轨迹规划,欢迎持续关注。

### MoveIt障碍物规避算法实现与实例 #### 实现概述 MoveIt采用多种方法来处理路径规划中的障碍物规避问题。主要依赖于配置空间(Configuration Space, C-Space)的概念,在此概念下,机器人关节角度组合构成的空间被离散化并考虑碰撞检测[^1]。 #### 配置环境 为了在MoveIt中实施有效的避障功能,需先安装ROS (Robot Operating System),随后通过`rosdep install moveit`命令获取MoveIt及其依赖项。确保已设置好支持特定机器人的MoveIt配置文件,通常这些可以通过MoveIt Setup Assistant工具自动生成。 #### 使用OMPL进行运动规划 MoveIt集成了Open Motion Planning Library (OMPL),这是一个广泛使用的开源库,提供了丰富的采样基规 planners 来解决复杂的多自由度机械的路径查找难题。当定义目标姿态后,planner会尝试找到一条从当前状态到期望位置的安全轨迹,期间自动避开任何静态或动态障碍物。 ```cpp // 创建一个move_group接口对象用于交互控制 moveit::planning_interface::MoveGroupInterface move_group("panda_arm"); // 设置末端执行器的目标位姿 geometry_msgs::Pose target_pose; target_pose.orientation.w = 1.0; target_pose.position.x = 0.28; target_pose.position.y = -0.7; target_pose.position.z = 1.0; // 将目标位姿设为目标 move_group.setPoseTarget(target_pose); // 调用plan()函数计算到达该目标的姿态序列;如果成功,则返回true bool success = (move_group.plan(my_plan) == moveit::planning_interface::MoveItErrorCode::SUCCESS); if (!success){ ROS_ERROR_STREAM("Planning failed!"); } else{ // 执行计划好的动作 move_group.execute(my_plan); } ``` #### 动态障碍物回避 对于移动平台上的应用,除了固定场景内的物体外还需应对可能出现的新障碍。这可通过实时感知数据更新环境模型完成。借助传感器输入如激光雷达(LIDAR), RGB-D相机等设备收集周围信息,并利用Octomap或其他三维映射技术构建地图表示形式。之后,每当接收到新的观测结果时就刷新内部的地图结构以便即时调整导航策略。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值