ROS机械臂 Movelt 学习笔记1 | 基础准备
环境: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。看到机器人模型。
当这个机器人模型被加载出来后,我们就可以继续配置这个机器人。
在左侧自上向下依次设置:
- Global Options中,Fixed Frame 设置为
/panda_link0
- 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
- Robot Description 设置为
4.2 机器人可视化设置
Rviz 中有四种显示模式:
- 机器人在
/planning scene
规划环境中的配置(默认情况下处于活动状态)。 - 机器人的规划路径(默认情况下处于活动状态)。
- 绿色:运动规划的开始状态(默认情况下禁用)。
- 橙色:运动规划的目标状态(默认情况下处于活动状态)。
可以通过选择框来打开关闭各个可视化状态:
- 使用 "Scene Robot" 选项卡中的 "Show Robot Visual"显示机器人规划场景。
- 使用 "Planned Path" 选项卡中的 "Show Robot Visual" 复选框显示规划路径。
- 使用 "Planning Request" 选项卡中的 "Query Start State" 复选框显示开始状态。
- 使用 "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
这样下次打开Rviz,可以通过File->Open 调用保存的配置。
ROS机械臂 Movelt 学习笔记1 | 基础准备的更多相关文章
- ROS机械臂 Movelt 学习笔记2 | Move Group 接口 C++
Movelt为使用者提供了一个最通用且简单的接口 MoveGroupInterface 类,这个接口提供了很多控制机器人的常用基本操作,如: 设置机械臂的位姿 进行运动规划 移动机器人本体 将物品添加 ...
- ROS机械臂 Movelt 学习笔记4 | Move Group 接口 Python
Python 的使用总是比 C++ 简单许多,Move Group 的 Python 接口更为便捷,也为使用者提供了很多用于操纵机器人和机械臂的函数,能够和 C++ 接口实现相同的功能: 设置机械臂的 ...
- ROS机械臂 Movelt 学习笔记3 | kinect360相机(v1)相关配置
目标是做一个机械臂视觉抓取的demo,在基地里翻箱倒柜,没有找到学长所说的 d435,倒是找到了一个老古董 kinect 360. 前几天就已经在旧电脑上配置好了,现在记录在新电脑上的配置过程. 1. ...
- ROS机械臂 Movelt 学习笔记5 | MoveIt Commander Scripting
前一讲python接口中提到moveit_commander 包.这个包提供了用于运动规划.笛卡尔路径计算以及拾取和放置的接口. moveit_commander 包还包括一个命令行接口程序movei ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111
基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...
- Django学习笔记(基础篇)
Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C#学习笔记(基础知识回顾)之值传递和引用传递
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...
随机推荐
- Linux screen命令详解
开源Linux 长按二维码加关注~ 上一篇:局域网IP冲突罪魁祸首是谁? 很多时候,我们都需要执行一些需要很长时间的任务.如果这时候,你的网络连接突然断开了,那么你之前所做的所有工作可能都会丢失,所做 ...
- Python 什么是flask框架?快速入门
一:Python flask框架 前言 1.Python 面向对象的高级编程语言,以其语法简单.免费开源.免编译扩展性高,同时也可以嵌入到C/C++程序和丰富的第三方库,Python运用到大数据分析. ...
- 是时候使用 YAML 来做配置或数据文件了
概述 我们做程序,经常需要用到配置信息,回顾一下这么多年的搬砖生涯,我记得用过多种格式的文件来定义配置信息,例如 ini文件,xml文件,或者现在比较流行的 json 文件. 这些年虽然云计算和云原生 ...
- 手写vue路由
目录 一.简易demo 二.Vue-Router传参方式 三.进阶-路由导航 一.简易demo // routes注册 import Vue from "vue"; // impo ...
- 前后端分离,SpringBoot如何实现验证码操作
验证码的功能是防止非法用户恶意去访问登录接口而设置的一个功能,今天我们就来看看在前后端分离的项目中,SpringBoot是如何提供服务的. SpringBoot版本 本文基于的Spring Boot的 ...
- spring-boot rest controller 使用枚举作为参数,重写反序列化实现任意值转枚举类型
目录 BaseEnum MyEnum StringToEnumConverterFactory FormatterConfig DTO RestController 参考 BaseEnum packa ...
- Fail2ban 配置详解 配置说明
fail2ban的配置主要由基础配置(fail2ban.conf)和监禁配置(jail.conf)两部分组成. fail2ban的配置采用标签块"[块名]"和键值"key ...
- 钉钉登录二维码嵌套在vue页面中
转自 https://www.csdn.net/tags/OtDacg3sMjQ2NTgtYmxvZwO0O0OO0O0O.html 钉钉登录二维码嵌套在vue页面中 2021-09-04 14:42 ...
- Similarity calculation
推荐算法入门(相似度计算方法大全) 一.协同过滤算法简介 在推荐系统的众多方法之中,基于用户的协同过滤是诞最早的,原理也比较简单.基于协同过滤的推荐算法被广泛的运用在推荐系统中,比如影视推荐.猜你喜欢 ...
- c++ 快速乘
First 在一些数学题中,两个数相乘运算很多,同时又很容易溢出,如两个 long long 相乘 今天本蒟蒻来总结一下快速乘的两种方法 1:二进制 和快速幂的原理一样,优化一个一个加的算法,复杂度\ ...