首页 > 其他分享 >Ros2 Moveit2 Rviz2 快速入门

Ros2 Moveit2 Rviz2 快速入门

时间:2024-08-04 21:19:08浏览次数:6  
标签:状态 菜单 RViz 机器人 复选框 Rviz2 规划 Moveit2 Ros2

 

../../../_images/rviz_plugin_head.png

这里将教您如何使用 RViz 和 MoveIt Display 插件在 MoveIt 中创建运动计划。Rviz 是 ROS 中的主要可视化工具,也是调试机器人的非常有用的工具。MoveIt Display 插件允许您设置虚拟环境(规划场景)、以交互方式为机器人创建起始和目标状态、测试各种运动规划器并可视化输出。让我们开始吧!

入门

如果您尚未完成此操作,请确保您已完成入门指南Docker 指南中的步骤。如果您遵循了 Docker 指南,还请遵循创建 Colcon 工作区和下载教程指南来设置教程。

步骤 1:启动演示并配置插件

  • 启动演示:

    ros2 launch moveit2_tutorials demo.launch.py
  • 如果您是第一次执行此操作,您应该在 RViz 中看到一个空的世界,并且必须添加运动规划插件:

    • 你应该在 RViz 中看到一个空的世界:

    A

    • 在 RViz 显示选项卡中,按添加

    乙

    • 从 moveit_ros_visualization 文件夹中,选择“MotionPlanning”作为 DisplayType。按“Ok”。

    C

    • 您现在应该在 RViz 中看到 Kinova 机器人:

    德

  • 加载运动规划插件后,我们可以对其进行配置。在“显示”子窗口的“全局选项”选项卡中,将固定框架字段设置为/base_link

  • 现在,您可以开始为您的机器人(本例中为 Kinova Gen 3)配置插件。单击“Displays”中的“MotionPlanning”。

    • 确保机器人描述字段设置为robot_description

    • 确保规划场景主题字段设置为/monitored_planning_scene。单击主题名称以显示主题名称下拉菜单。

    • 确保计划路径下的轨迹主题设置为。/display_planned_path

    • 在Planning Request中,将Planning Group更改为manipulator。您也可以在左下方的 MotionPlanning 面板中看到这一点。

../../../_images/rviz_plugin_start.png

第二步:玩转可视化机器人

有四种不同的重叠可视化效果:

  1. 机器人在/monitored_planning_scene规划环境中的配置(默认处于活动状态)。

  2. 机器人的规划路径(默认处于活动状态)。

  3. 绿色:运动规划的起始状态(默认禁用)。

  4. 橙色:运动规划的目标状态(默认处于活动状态)。

可以使用复选框打开或关闭每个可视化的显示状态:

  1. 规划场景机器人使用场景机器人树菜单中的显示机器人视觉复选框。

  2. 使用计划路径树菜单中的显示机器人视觉复选框来规划路径。

  3. 使用规划请求树菜单中的查询开始状态复选框的开始状态。

  4. 使用规划请求树菜单中的查询目标状态复选框的目标状态。

  • 使用所有这些复选框来打开或关闭不同的可视化效果。

../../../_images/rviz_plugin_visualize_robots.png

步骤 3:与 Kinova Gen 3 交互

对于接下来的步骤,我们只需要场景机器人、起始状态和目标状态:

  1. 勾选“规划路径”树菜单中的“显示机器人视觉”复选框

  2. 取消选中“场景机器人”树菜单中的“显示机器人视觉”复选框

  3. 选中规划请求树菜单中的查询目标状态复选框。

  4. 选中规划请求树菜单中的查询开始状态复选框。

现在应该有两个交互式标记。一个对应于橙色手臂的标记将用于设置运动规划的“目标状态”,另一个对应于绿色手臂的标记将用于设置运动规划的“起始状态”。如果您没有看到交互式标记,请按RViz 顶部菜单中的Interact (注意:某些工具可能被隐藏,请按顶部菜单中的“+”添加Interact工具,如下所示)。

../../../_images/rviz_plugin_interact.png

现在,您应该能够使用这些标记拖动手臂并改变其方向。试试看!

进入碰撞阶段

对于本节,隐藏计划路径和目标状态:

  1. 取消选中规划路径树菜单中的“显示机器人视觉”复选框

  2. 取消选中规划请求树菜单中的查询目标状态复选框。

现在,应该只有起始状态(绿色手臂)可见。尝试将手臂移动到两个连杆相互碰撞的配置中。(如果您觉得这很困难,请确保 MotionPlanning 插件的 Planning 选项卡下的“使用碰撞感知 IK”复选框未选中。)完成此操作后,发生碰撞的连杆将变为红色。

../../../_images/rviz_plugin_collision.png

现在,选中“使用碰撞感知 IK”复选框,然后再次尝试将两个链接移动到彼此碰撞的位置。选中该复选框后,IK 解算器将继续尝试为所需的末端执行器姿势找到无碰撞解决方案。未选中时,解算器将允许在解决方案中发生碰撞。无论复选框的状态如何,发生碰撞的链接仍将始终以红色显示。

../../../_images/rviz_plugin_collision_aware_ik_checkbox.png

移出可到达工作区

请注意当您尝试将末端执行器移出其可到达的工作空间时会发生什么。

../../../_images/rviz_plugin_invalid.png

在进入下一部分之前,重新启用计划路径和目标状态:

  1. 勾选“规划路径”树菜单中的“显示机器人视觉”复选框

  2. 选中规划请求树菜单中的查询目标状态复选框。

移动关节或零空间

您可以使用“关节”选项卡移动单个关节和 7 自由度机器人的冗余关节。尝试移动“零空间探索”滑块,如下面的动画所示。

步骤 4:使用 Kinova Gen 3 进行运动规划

  • 现在,您可以使用 MoveIt RViz 插件中的 Kinova Gen 3 开始运动规划。

    • 将起始状态移动到所需位置。

    • 将目标状态移动到另一个所需位置。

    • 确保两种状态都不会与机器人本身发生碰撞。

    • 取消选中计划路径树菜单中的显示轨迹复选框。

  • 在MotionPlanning窗口的Planning选项卡下,按下Plan按钮。

  • 勾选“规划路径”树菜单中的“显示轨迹”复选框。您应该看到由一系列操纵器姿势表示的手臂路径。

../../../_images/rviz_plugin_planned_pa​​th.png

审视轨迹航点

您可以在 RViz 中逐点直观地检查轨迹。

  • 从“面板”菜单中,选择“轨迹 - 轨迹滑块”。您将在 RViz 上看到一个新的滑块面板。

  • 设定你的目标姿势,然后运行计划

  • 使用“滑块”面板进行播放,例如移动滑块,按“播放”按钮。

注意:将末端执行器放置到新目标后,请确保在运行Play之前运行Plan - 否则您将看到前一个目标的航点(如果可用)。

../../../_images/rviz_plugin_plan_slider.png

规划笛卡尔运动

如果激活“使用笛卡尔路径”复选框,机器人将尝试在笛卡尔空间中线性移动末端执行器。

../../../_images/rviz_plugin_plan_free.png ../../../_images/rviz_plugin_plan_cartesian.png

执行轨迹,调整速度

规划成功后单击“规划并执行”或“执行”将把轨迹发送给机器人 - 在本教程中,由于您使用了kinova_demo.launch,因此仅模拟了机器人。

最初,默认速度和加速度被缩放为0.1机器人最大值的 10% ( )。您可以在下面显示的“规划”选项卡中更改这些缩放系数,或者在moveit_config机器人的 中更改这些默认值(以 为单位joint_limits.yaml)。

../../../_images/rviz_plugin_collision_aware_ik_checkbox.png

下一步

RViz 可视化工具

许多教程都使用moveit_visual_tools演示来逐步完成。在继续下一个教程之前,最好先启用RvizVisualToolsGui。

从“面板”菜单中,选择“添加新面板”。从菜单中,选择“ RvizVisualToolsGui ”并单击确定。您将看到新面板添加到 RViz。

../../../_images/rviz_add_rviz_visual_tools.png

../../../_images/rviz_add_rviz_visual_tools.png ../../../_images/rviz_panels.png

保存您的配置

RViz 可让您将配置保存在 下。您应该在继续学习下一个教程之前执行此操作。如果您选择以新名称保存配置,则可以使用并引用配置文件:File->Save ConfigFile->Save Config As

ros2 launch moveit2_tutorials demo.launch.py rviz_config:=your_rviz_config.rviz

将其替换your_rviz_config.rviz为您保存的文件的名称moveit2_tutorials/doc/tutorials/quickstart_in_rviz/launch/,然后构建工作区以便可以找到它。

 

标签:状态,菜单,RViz,机器人,复选框,Rviz2,规划,Moveit2,Ros2
From: https://www.cnblogs.com/ai-ldj/p/18342202

相关文章

  • franka ros2
    franka_ros2在Windows上不受支持。franka_ros2repo包含libfranka的ROS2集成 。 警告:franka_ros2正在快速开发中。预计会出现重大变化。在 GitHub上报告错误。先决条件ROS2Humble安装( ros-humble-desktop)或带有DevContainer的VSCodeIDE。PREEMPT_RT......
  • ros2 自定义一个控制器
    在ROS2中,自定义一个控制器并进行使用涉及几个步骤,包括编写控制器代码、配置控制器参数、编写控制器启动文件以及在运行时加载和使用控制器。以下是一个详细的步骤指南:1.编写控制器代码首先,创建一个控制器类,该类继承自controller_interface::ControllerInterface。下面是一......
  • ROS2对比ROS
    ROS(RobotOperatingSystem)和ROS2(RobotOperatingSystem2)是两个广泛使用的机器人软件框架,它们由OpenRobotics组织维护和开发。尽管名称中包含“操作系统”,但ROS和ROS2实际上是一组工具、库和约定,用于帮助开发机器人软件。下面列出了ROS2相对于ROS的一......
  • 在ROS2 - humble 中做一个节点
    ROS2(RobotOperatingSystem2)中的节点(Node)是ROS2系统中的一个核心概念,它代表了执行特定任务的进程或程序模块。节点定义:    在ROS2中,节点是系统中最小的处理单元,负责执行特定的任务或功能。每个节点都具有独立的处理能力和通信能力,可以与其他节点进行交互。功能: ......
  • ROS2小乌龟案例话题通信
    1.案例需求需求:启动两个turtlesim_node节点,节点2中的乌龟自动调头180°,我们可以通过键盘控制节点1中的乌龟运动,但是不能控制节点2的乌龟,需要自实现功能:可以根据乌龟1的速度生成并发布控制乌龟2运动的速度指令,最终两只乌龟做镜像运动。2.案例分析在上述案例中,主要需要关注的......
  • ros2,功能包下使用自定义的msg,msg文件在定义在当前文件下
    1.创建功能包,参考ros官方方式Writingasimplepublisherandsubscriber(C++)—ROS2Documentation:Humbledocumentationros2pkgcreate--build-typeament_cmake--licenseApache-2.0cpp_pubsub2.创建msg在cpp_pubsub功能包下创建msg文件夹 ros2_ws/cpp_pubsub......
  • 已解决——ROS2开发环境搭建,亚博智能小车
    在实现多机通讯时,官方教程讲的很模糊,具体细节实现主机(ROS2小车),从机(自己的电脑上的Ubuntu系统)首先打开两个terminal,左边的负责连接小车,右边的负责实现从机的接受话题主机terminal输入[email protected]进入后再输入./run_docker.sh然后就进入小车的docker了然后输入sud......
  • Franka Ros2 主要节点及关系
     控制节点:1.franka_hw_node功能:与硬件接口通信,处理低级控制。订阅话题:/franka/control_commands发布话题:/franka/hardware_states /franka/state_feedback2.franka_control_node功能:处理机器人控制命令,管理控制模式。订阅话题:/franka/state_feedback发布话题:/frank......
  • 【ROS2】中级-编写动作服务器和客户端(C++)
    目标:用C++实现一个动作服务器和客户端。教程级别:中级 时间:15分钟 目录 背景 先决条件 任务1.创建custom_action_cpp包2.编写动作服务器3.编写动作客户端 摘要 相关内容 背景动作是ROS中异步通信的一种形式。动作客户端向动作服务器发送目标请求。动作......
  • ros2
    注:已从RoboMaster退队,懒得更新第一章ros2介绍1.1ros为什么会出现做一个机器人是非常复杂的一件事情,因为一个机器人需要涉及到多个部分,而且这些部分之间还要进行通信。例如设计一个像下图一样的轮式移动机器人,我们对其进行拆解。可以分为感知、决策、控制三个部分感知部分......