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
# 给自己的配置命名,比如 tryPanda.rviz
这样下次打开Rviz,可以通过File->Open 调用保存的配置。
即,下次运行 roslaunch panda_moveit_config demo.launch
,就可以继续上面的配置进行操作,不必从头再来。