• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

ROS探索总结(四十八)——ROS机器人实例 (PR2)

人工智能 古月 2646次浏览 0个评论

PR2(Personal Robot 2,个人机器人2代)是Willow Garage公司设计的机器人平台,其中数字2代表第二代机器人。

PR2有两条手臂,每条手臂七个关节,手臂末端是一个可以张合的夹爪;PR2依靠底部的四个轮子移动,在头部、胸部、肘部、夹爪上分别安装有高分辨率摄像头、激光测距仪、惯性测量单元、触觉传感器等丰富的传感设备。在PR2的底部有两台八核电脑作为机器人各硬件的控制和通信中枢,并且都安装了Ubuntu和ROS系统。

1

PR2和ROS有千丝万缕的关系,可以说ROS产生于PR2,也促成了PR2。ROS原本是Willow Garage为复杂的PR2机器人平台设计的软件框架,依靠强大的ROS,PR2可以独立完成多种复杂的任务,例如PR2可以自己开门、找到插头给自己充电、打开冰箱取出啤酒、打简单的台球等等。只不过PR2价格高昂,而且能力还达不到商业应用的要求,如今主要用于学术研究。

可见,PR2是ROS中元老级的机器人平台,所有软件代码依托于ROS,并且全部在ROS社区中开放源代码,为我们学习、应用ROS提供了丰富的资源。

 

一、 PR2功能包安装

 

在ROS Kinetic中,大部分PR2功能包还无法支持,官方推荐使用ROS Indigo运行PR2。

首先使用如下命令安装PR2机器人的相关功能包:

$ sudo apt-get install ros-indigo-pr2-*

以上命令主要安装了下表中PR2机器人相关的ROS功能包。

2

PR2机器人售价昂贵,大多数人都无法接触到,所以这里我们使用仿真器运行PR2的相关功能。

 

二、 Gazebo中的PR2

 

使用如下命令启动gazebo仿真环境,并使用pr2.launch将机器人加载到gazebo中:

$ roslaunch gazebo_ros empty_world.launch
$ roslaunchpr2_gazebo pr2.launch

也可以使用pr2_gazebo功能包中的pr2_empty_world.launch一次性启动gazebo并加载机器人模型:

$ roslaunch pr2_gazebo pr2_empty_world.launch

启动成功后,就可以在一个空旷的gazebo仿真环境中看到PR2机器人了。

3

查看当前系统中的话题列表,会看到众多话题已经发布或者等待订阅,这就是PR2机器人仿真器提供给用户的接口,我们可以基于这些接口实现很多功能。

4

为了测试PR2的传感器是否启动成功,可以在仿真环境中随机添加一些外部物体。

5

然后打开rviz,添加点云、激光、摄像头等插件,实现传感器数据的可视化显示。

6

目前PR2机器人还处于静止状态,可以运行键盘控制节点,控制PR2运动:

$ roslaunch pr2_teleop teleop_keyboard.launch

启动后根据终端中的提示,使用键盘控制PR2机器人在gazebo中移动,同时rviz中的PR2模型也会同步更新。

7

在控制PR2移动时,rviz中的Fixed Frame需要修改为odom_combined

 

三、 使用PR2实现SLAM

 

在PR2仿真环境中,我们已经获取到所有传感器的数据,并且可以控制PR2移动,接下来尝试使用PR2实现SLAM。

第一步还是启动PR2的gazebo仿真环境:

$ roslaunchpr2_gazebo pr2_empty_world.launch

然后在空旷的gazebo仿真环境中添加一些障碍物体。

12212

这里以gmapping为例,创建一个启动gmapping节点的启动文件pr2_build_map.launch:

<launch>
   <node name="gmapping_node"pkg="gmapping"type="slam_gmapping" respawn="false" >
       <remap to="base_scan" from="scan"/>
       <paramname="odom_frame" value="odom_combined" />
   </node>
</launch>

然后在该文件所在的路径下直接运行以下命令:

$ roslaunch pr2_build_map.launch

如果launch文件、节点、可执行文件等在终端的当前路径下,运行命令时可以不加功能包名。

启动成功后,gmapping节点就开始SLAM建图了。启动rviz并添加显示插件后,可以看到如图所示的SLAM效果。

8

启动键盘控制节点,控制PR2机器人在仿真环境中围绕障碍物体移动,就可以实现SLAM了。

$ roslaunch pr2_teleop teleop_keyboard.launch

9

 

四、 PR2机械臂的使用

 

PR2不仅是一个移动机器人平台,它还装配了两个机械手,可以实现很多复杂的机械臂操作。类似于键盘发布速度控制指令,我们也可以在终端中使用如下命令控制PR2的两个机械臂:

$ roslaunch pr2_gazebo pr2_empty_world.launch
$ roslaunch pr2_teleop_general pr2_teleop_general_keyboard.launch

启动成功后,可以在终端中看到提示信息,分别控制PR2的头部、身体、机械臂等多个可运动部位。

10

此处选择控制机械臂,然后会看到一系列控制命令。

111

按照命令提示点击键盘按键,就可以控制PR2机器人的两个手臂运动了。

11

说到机械臂运动,就不得不提到MoveIt!,PR2机器人的机械臂也可以通过MoveIt!控制。在安装完成的PR2功能包中,已经包含了PR2手臂的MoveIt!配置功能包,可以直接启动demo示例:

$ roslaunch pr2_moveit_config demo.launch

在启动的rviz中会看moveit的界面,可以通过MoveIt!插件或代码控制机械手臂运动。

22121

除此之外,我们也可以使用如下命令,通过MoveIt!控制gazebo仿真器中的PR2:

$ roslaunch pr2_gazebopr2_empty_world.launch
$ roslaunch pr2_moveit_config move_group.launch
$ roslaunch pr2_moveit_config moveit_rviz.launch

各种控制器插件在这里都已经配置完成,有兴趣的读者可以详细学习PR2功能包中的源码,这些都是我们实践过程中重要的参考资料。

再次在rviz中控制PR2的机械手臂运动,gazebo中PR2的手臂将根据规划的轨迹完成运动。

1111

 
 

ROS探索总结(四十八)——ROS机器人实例 (PR2)CaptureROS探索总结(四十八)——ROS机器人实例 (PR2)


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ROS探索总结(四十八)——ROS机器人实例 (PR2)
喜欢 (0)

您必须 登录 才能发表评论!

加载中……