一、基础知识

1.1 URDF

URDF是ROS中机器人模型的描述格式,包括机器人的外观、物理属性、关节类型等方面。

  • <robot>:最顶层标签
  • <link>:描述刚提的外观形状、碰撞几何、颜色、惯性矩阵等
  • <joint>:描述两个link之间的关系,有6种类型,最常用的是revolute类型,有关节位置限制的旋转关节

xacro模型可以将部分URDF打包成一个"类",在其他模型中调用。

功能包中一般包括以下四个部分

  1. cfg:配置文件
  2. launch:加载urdf模型,并在rviz中展示
  3. meshes:urdf用到的外观模型
  4. urdf:urdf模型定义

1.2 Gazebo

1.3 Moveit控制

(1)Moveit!大致功能

  • 运动学计算
  • 运动规划
  • 碰撞检测

最重要的节点是move_group,输入可以是RVIZ中的数据或点云和深度图。路径规划一般使用的OMPL库,碰撞检测使用FCL库。最后发送个机械臂让机械臂执行轨迹。

1.4 机械臂运动规划

1.5 基于深度学习的视觉避障

二、实验环境搭建

1.1 安装ROS

参考Ubuntu20.04安装ROS Noetic文章

![[01-Ubuntu20.04安装ROS Noetic#二、安装ROS]]

1.2 安装Moveit!

1
sudo apt install ros-noetic-moveit

1.3 安装UR机器人及驱动

复制代码后,修改下面的内容,使其能在noetic版本的ros上运行。

1
gedit ~/catkin_ws/src/universal_robot/ur_msgs/srv/SetPayload.srv
1
2
3
4
float32 payload
geometry_msgs/Vector3 center_of_gravity
-----------------------
bool success
1
gedit ~/catkin_ws/src/universal_robot/ur_msgs/CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
cmake_minimum_required(VERSION 2.8.3)
project(ur_msgs)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS message_generation std_msgs geometry_msgs)


## Generate messages in the 'msg' folder
add_message_files(
FILES
Analog.msg
Digital.msg
IOStates.msg
RobotStateRTMsg.msg
MasterboardDataMsg.msg
RobotModeDataMsg.msg
ToolDataMsg.msg
)

## Generate services in the 'srv' folder
add_service_files(
FILES
SetPayload.srv
SetSpeedSliderFraction.srv
SetIO.srv
)


## Generate added messages and services with any dependencies listed here
generate_messages(
DEPENDENCIES
std_msgs
geometry_msgs
)

###################################
## catkin specific configuration ##
###################################
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES ur_msgs
CATKIN_DEPENDS message_runtime std_msgs geometry_msgs
# DEPENDS system_lib
)

###########
## Build ##
###########

#############
## Install ##
#############

#############
## Testing ##
#############
1
gedit ~/catkin_ws/src/universal_robot/ur_msgs/package.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0"?>
<package format="2">
<name>ur_msgs</name>
<version>1.2.5</version>
<description>The ur_msgs package</description>

<author>Andrew Glusiec</author>
<author>Felix Messmer</author>
<maintainer email="g.a.vanderhoorn@tudelft.nl">G.A. vd. Hoorn</maintainer>
<maintainer email="miguel.prada@tecnalia.com">Miguel Prada Sarasola</maintainer>
<maintainer email="nhg@ipa.fhg.de">Nadia Hammoudeh Garcia</maintainer>

<license>BSD</license>

<buildtool_depend>catkin</buildtool_depend>
<build_depend>message_generation</build_depend>
<depend>std_msgs</depend>
<depend>geometry_msgs</depend>
<exec_depend>message_runtime</exec_depend>

<export>
</export>
</package>

完成之后,就可以编译了。source之后使用roslaunch ur5_moveit_config demo.launch

1.4 简单测试

(1)Rviz打开UR5模型

机械臂夹爪模型路径为universal_robot/urdf/ur5_gripper_joint_limited_robot.urdf.xacro

可以通过universal_robot/ur_description/launch/view_ur5_with_gripper.launch启动,从Rviz中查看模型情况,并使用joint_state_publisher_gui对机械臂模型拖动控制。

1
2
3
4
# 无夹爪
roslaunch ur_description view_ur5.launch
# 有夹爪
roslaunch ur_description view_ur5_with_gripper.launch

(2)Rviz中Moveit测试

使用下面的程序可以在 Rviz 中进行 Moveit 轨迹规划测试。

1
2
3
4
# 无夹爪
roslaunch ur5_moveit_config demo.launch
# 有夹爪
roslaunch ur5_gripper_moveit_config demo.launch

(3)Gazebo中Moveit测试

1
2
3
4
# 无夹爪
roslaunch ur_gazebo ur5.launch
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch sim:=true
roslaunch ur5_moveit_config moveit_rviz.launch config:=true

ur5.launch:用于启动 gazebo 仿真环境。具体包括以下几个部分,启动空环境、定义 robot_description 参数服务器、发送到gazebo中生成机器人、启动并加载控制器。

ur5_moveit_planning_execution.launch:用于启动 MoveIt 相关组件。具体包括以下几个部分:设置 sim参数, 根据 sim 参数重映射 follow_joint_trajectory 话题,启动MoveIt。

moveit_rviz.launch:用于启动 Rviz 相关组件。具体包括以下几个部分:加载配置参数,启动Rviz。

1
2
3
4
# 有夹爪
roslaunch ur_gazebo ur5_with_gripper.launch
roslaunch ur5_single_arm_moveit_config ur5_moveit_planning_execution.launch
roslaunch ur5_gripper_moveit_config moveit_rviz.launch config:=true

1.5 导入自定义物体

(1)网络方法

使用 MeshLab 加载自己的物体模型。

点击【Filters -> Normals … -> Compute normals for points sets】,按照默认设置确定即可。

点击【Filters -> Remeshing -> Surface Reconstruction: Screened Poisson】,按照默认设置确定即可。

点击【Filters -> Texture -> Parametrization: Trivial Per-Triangle】,按照如下设置,重要的是Method。

image.png

点击【Filters -> Texture -> Transfer Vertex Attributes to Textur(1 or 2 meshes)】,按照如下设置,重要的是Source Mesh和Target Mesh。

image.png

(2)摸索方法

点击【Filters -> Texture -> Parametrization: Flat Plane】

点击【Filters -> Texture -> Transfer Vertex Attributes to Textur(1 or 2 meshes)】