ROS仿真揭秘——七自由度机器人(一)


从本篇开始,介绍一个ROS仿真平台下的七自由度机器人实例。这一篇,我们先让它动起来!

0 前言

由于工作需要来做一下实物仿真,只用MATLAB感觉有些不够,在机器人领域又有专门的ROS来做仿真,因此,还是系统的来学习一下ROS做仿真的流程吧。掌握之后,可以通过仿真来快速验证自己的算法,也还是不错的。本专栏以《Mastering ROS for Robotics Programming—Second Edition》中的七自由度机器人为例,旨在让初学者可以快速掌握ROS仿真的搭建过程。系统环境:Ubuntu16.04 + ROS kinetic + gazebo7。

1 初始环境配置

关于ROS环境的安装,请参考ROS(kinetic)有用指令集。如果在添加key时出错,请从官网查找适合软件源、适合ros版本的key。建议安装desktop-full的版本,这样会把gazebo等相关软件安装好。

装好ros后,需要创建一个工作空间。简单来说,每一个仿真模型我们都可以将其放在一个文件夹里,而工作空间就包含了这些文件夹,然后经过统一编译,便可以执行形式一致的命令来控制模型。下面给出常用的一些基本命令:

1
2
3
4
5
6
source /opt/ros/kinetic/setup.bash		# sourced your environment
mkdir -p ~/catkin_ws/src # 创建catkin_ws工作空间,建立一个src文件夹来存放模型源码
cd ~/catkin_ws/ # 打开工作空间
catkin_make # 编译
source devel/setup.bash
echo $ROS_PACKAGE_PATH # 确认环境变量包含了目录

说明:catkin_make是编译工作空间的命令,当每次新添加仿真模型后,都需要执行这条命令;source devel/setup.bash这条指令最好在每次打开工作空间后就执行一次,不然在新开的终端中执行roslaunch命令时往往会提示[seven_dof_arm_gazebo_control.launch] is neither a launch file in package [seven_dof_arm_gazebo] nor is [seven_dof_arm_gazebo] a launch file name之类的错误。

2 添加七自由度机器人模型

在第一节创建了工作空间后,向其中添加仿真模型有两种方法,一种是自行创建新程序包,即新的仿真模型;另一种是对于别人已经写好的仿真模型,直接复制或下载。

2.1 自行创建新模型

使用下面的命令可以创建新的程序包:

1
2
3
4
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
cd ..
catkin_make

上述命令的第2条意思是使用catkin_create_pkg命令来创建一个名为beginner_tutorials的新程序包,这个程序包依赖于std_msgsroscpprospy。如果有其他的依赖项,在后面继续添加即可。

这里需要注意一下,Gazebo是安装ROS完整版时一起安装的一个仿真环境。为了正常使用,我们还需要安装一些其他的依赖:

1
2
# 安装gazebo需要的一些依赖包
sudo apt-get install ros-kinetic-gazebo-rospkgs ros-kinetic-gazebo-msgs ros-kinetic-gazebo-plugins ros-kinetic-gazeboros-control

2.2 下载七自由度机器人仿真模型

对于我们所要用的例子,该书的作者已经帮我编写好了程序,我们可以将其直接下载拿来应用。在以后,我们会逐一介绍模型搭建的原理和实现控制模型的方法。

1
2
3
4
5
6
7
8
9
10
# 打开工作空间下的src文件夹
cd ~/catkin_ws/src
# 下载机器人模型
git clone https://github.com/jocacace/mastering_ros_robot_description_pkg.git
# 下载机器人仿真及控制器源码
git clone https://github.com/jocacace/seven_dof_arm_gazebo.git
# 返回上一层目录
cd ..
# 编译
catkin_make

3 先让机器人动起来

3.1 Rviz中显示七自由度机器人

我们可以先用Rviz对七自由度机器人做一个显示。关于Rviz是个什么东东,本篇就不讲了,目前只需知道它可以做机器人的显示即可。打开一个终端,执行

1
2
3
cd ~/catkin_ws
source devel/setup.bash
roslaunch mastering_ros_robot_description_pkg view_arm.launch

打开后我们会看到Rviz中的一个七自由度机器人模型,并且有一个简单的GUI界面可以让我们手动操作机器人,如下图所示。
03

说明:本节对应的是2.2节中下载下来的mastering_ros_robot_description_pkg。该Package包含了一些机器人的显示模型,但不包含控制器。
注意:如果下载下来的程序在运行过程中提示有错,一般是在mastering_ros_robot_description_pkg/urdf/seven_dof_arm.xacro文件中屏蔽掉了grasping_framegeometry属性,将该标签下的属性解除屏蔽即可。新手可参照其他linkgeometry属性。其实,不解决这个错误也没关系,它只是七自由度机器人模型最上方的那个小白方块的显示,暂时不影响大局。

3.2 Gazebo中对机器人做仿真

Rviz一般是用来做显示的工具,Gazebo则是物体仿真的一个环境。

  1. 打开一个终端,执行:

    1
    2
    3
    cd ~/catkin_ws
    source devel/setup.bash
    roslaunch seven_dof_arm_gazebo seven_dof_arm_gazebo_control.launch

    打开后我们会看到gazebo中的一个七自由度机器人模型,如下图所示。
    01

  2. 打开第二个终端,执行:

    1
    2
    3
    cd ~/catkin_ws
    source devel/setup.bash
    rtopic pub /seven_dof_arm/joint4_position_controller/command std_msgs/Float64 1.0

    执行时,注意观察gazebo中的运动效果,可以看到机器人第4关节进行了如下效果的运动。
    02

说明:本节对应的是2.2节中下载下来的seven_dof_arm_gazebo安装包。该Package包含了一些七自由度机器人的控制器。

经过上述的操作,应该已经让机器人成功运动起来了。什么?动完之后觉得索然无味?废话!都不打赏怎么能有意思?(皮一下,逃~)不知其所以然,怎么能体会到其中的奥妙!还不赶紧看后面的博客!

------ 本文结束感谢您的阅读------
Donate a cup of cola?