jjzjj

ROS机械臂 Movelt 学习笔记1 | 基础准备

Clivia Du 2023-03-28 原文

环境:Ubuntu18.04 + ROS Melodic

1. 安装ROS

官网下载安装步骤:http://wiki.ros.org/melodic/Installation/Ubuntu

一键安装的快捷方式:

wget http://fishros.com/install -O fishros && bash fishros

保证自己的ROS可以使用。可以按照官网进行小乌龟测试。

2. 安装 movelt

Movelt 并没有直接附带在 ROS中,需要自行安装:

sudo apt install ros-melodic-moveit

如果是更高版本(其他版本)则安装对应的moveit. 比如Ubuntu20.04对应的是ROS Noetic .也可以直接从源码下载:https://moveit.ros.org/install/source/

3. 下载例程

如果你的手头没有现成的素材,可以从tutorial下载,首先我们建立一个工作空间用于 ROS程序的开发。后面会介绍ROS文件空间的结构。

mkdir ~/ARM/ws_moveit/src
cd ~/ARM/ws_moveit/src
git clone https://github.com/ros-planning/moveit_tutorials.git -b melodic-devel
git clone https://github.com/ros-planning/panda_moveit_config.git -b melodic-devel

安装一些必要的依赖:

cd ~/ARM/ws_moveit/src
rosdep install -y --from-paths . --ignore-src --rosdistro melodic

设置工作空间

cd ~/ARM/ws_moveit
catkin config --extend /opt/ros/${ROS_DISTRO} --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin build

刷新工作空间,使其能够正常工作:

source ~/ARM/ws_moveit/devel/setup.bash

也可以将这句话写入 bashrc 文件,使其自动执行,就不需要每次都 source 了:

echo 'source ~/ARM/ws_moveit/devel/setup.bash' >> ~/.bashrc

4. Rviz 初试

上手 MoveIt 的最快方法就是通过 RViz 插件。Rviz 是 ROS 中的主要可视化工具,也是调试机器人非常有用的工具。MoveIt Rviz插件可以设置虚拟环境(场景),以交互方式创建机器人的开始和目标状态,测试各种运动规划器,并以可视化的方式输出。

在前3步中我们已经做好了初始化的准备,下面我们看一看rviz插件的相关操作。

4.1 Launch the Demo and Configure the Plugin

运行 panda_moveit_config 的 demo launch文件:

cd ~/ARM/ws_moveit
source devel/setup.bash
roslaunch panda_moveit_config demo.launch rviz_tutorial:=true

这里我们提前使用 panda_moveit_config 包,这个包是封装了机械结构和运动动力学的机器人模型,后面会将介绍这个包是怎么来的。

如果是第一次运行,将会看到以下界面:

点击左下角的 Add,选择 MotionPlanning,点击 OK。看到机器人模型。

当这个机器人模型被加载出来后,我们就可以继续配置这个机器人。

在左侧自上向下依次设置:

  1. Global Options中,Fixed Frame 设置为 /panda_link0
  2. MotionPlanning 中
    • Robot Description 设置为 robot_description
    • Planning Scene Topic 设置为 /planning_scene
    • Planning Request 中,将 Planning Group 设置为 panda_arm
    • Planning Path 中,将 Trajectory Topic 设置为 /move_group/display_planned_path

4.2 机器人可视化设置

Rviz 中有四种显示模式

  1. 机器人在 /planning scene 规划环境中的配置(默认情况下处于活动状态)。
  2. 机器人的规划路径(默认情况下处于活动状态)。
  3. 绿色:运动规划的开始状态(默认情况下禁用)。
  4. 橙色:运动规划的目标状态(默认情况下处于活动状态)。

可以通过选择框来打开关闭各个可视化状态:

  1. 使用 "Scene Robot" 选项卡中的 "Show Robot Visual"显示机器人规划场景
  2. 使用 "Planned Path" 选项卡中的 "Show Robot Visual" 复选框显示规划路径
  3. 使用 "Planning Request" 选项卡中的 "Query Start State" 复选框显示开始状态
  4. 使用 "Planning Request" 选项卡中的 "Query Goal State" 复选框显示目标状态

通过这些选项卡的打开关闭可以显示不同的可视化效果。

4.3 与Panda机械臂交互

接下来我们只打开 Planned Path、Start State 以及 Goal State. 不打开 Scene Robot 。现在可以看到机械臂呈现橘色。

即作如下的可视化勾选设置:

  • 勾选Planned Path-Show Robot Visual
  • 取消勾选Scene Robot-Show Robot Visual
  • 勾选Planning Request-Query Goal State
  • 勾选Planning Request-Query Start State

现在应该有两个交互标记 (interactive markers):

  • 橙色手臂标记用于表示运动规划的“目标状态”,

  • 绿色手臂标记用于表示运动规划的“开始状态”。

  • 如果看不到交互标记,请按RViz顶部菜单中的 "Interact".

    注意:某些工具可能是被隐藏了,请按顶部菜单中的 "+" 以添加交互工具。

现在,就能够使用这些标记来拖动手臂并更改其状态:比如拖动手臂到达某个位置:

4.3.1 碰撞状态

Collision. 当试图移动机械臂的某个关节与其他部分发生碰撞时,碰撞的两个部分将变为红色。

在 "Planning" 选项卡下的 MotionPlanning 插件中找到的 "Use Collision-Aware IK" 复选框允许您切换IK解算器的行为。勾选该复选框后,解算器将不断尝试为所需末端效应器位姿寻找无碰撞解决方案

会比之前优雅很多,但还是会碰撞,只是少了很多可能。

未选中这个选项卡时,解算器会允许有碰撞的解。

无论复选框的状态如何,碰撞的两个部分依然以红色显示。

4.3.2 移出可达工作空间

由于joint的角度限值和关节的固定长度,目标点局限在一个有效的空间(workspace)内, 对于出界的目标点,求解器将无法求出解。

4.4 使用 Motion Planning

现在可以通过 Motion Planning 让机械臂规划运动。

  • 点中Start State 拖到想要的起始位置;
  • 点中Goal State 拖到想要的目标位置;
  • 检查起始和目标状态下都没有碰撞;
  • 确保在Planned Path选项卡中勾选Planned Path;

在 MotionPlanning 插件的 Planning 中点击Plan按钮, 可以看到机械臂运动的轨迹。

4.5 查看轨迹点

在 Rviz 中通过 slider 查看运动轨迹点。

  • Panels菜单中选择MotionPlanning - Slider,在左边会出现一个滑块。

    Panels在Rviz中最上面的file那一行。

  • 设置目标状态,点击Plan

  • 拖动滑块可以查看轨迹点。

注意,当你把机械臂放到一个新的目标时,先执行 Plan 再执行 slider 中的 Play,否则看到的还是上一次执行的轨迹点。

4.6 保存设置

File->Save Config
# 给自己的配置命名,比如 tryPanda.rviz

这样下次打开Rviz,可以通过File->Open 调用保存的配置。

即,下次运行 roslaunch panda_moveit_config demo.launch ,就可以继续上面的配置进行操作,不必从头再来。

有关ROS机械臂 Movelt 学习笔记1 | 基础准备的更多相关文章

  1. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  2. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  3. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  4. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  5. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  6. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  7. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  8. ruby - 我如何学习 ruby​​ 的正则表达式? - 2

    如何学习ruby​​的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby​​的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/

  9. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  10. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

随机推荐