实验一 Baxter机器人软硬件配置 - RLi43/Baxter-Experimental-Guide GitHub Wiki

实验目的

  1. 将Baxter机器人的工作环境配置完成,为后续工作奠定基础
  2. 熟悉Baxter机器人工作的软硬件环境,初步了解Baxter机器人的使用

实验要求

  1. 实验前了解实验指导书中的相关内容
  2. 实验前做好实验计划,做好前期准备,能按实验指导书完成相应内容,并进行适当探索。
  3. 注意实验安全

实验内容

本次实验内容主要是了解Baxter硬件基础并完成基本环境的配置,为之后的实验打下基础和准备。

Baxter硬件基础主要是了解该机器人的基本设置和出厂配置,而基本环境的配置包括固定的Ubuntu版本安装,ROS平台配置,SDK安装以及仿真平台的配置等。

Baxter硬件设置

  • Baxter 科研版机器人本体
  • 1/2 英寸扳手
  • 17mm 扳手
  • 27mm 扳手(用于底座安装)
  • 平头螺丝刀
  • 电动平行夹持器或启动夹持器
  • Baxter 底座
  • 内六角扳手一套
  • USB 键盘
  • 路由器及网线

Baxter机器人的安装

Baxter 机器人在工作时应保留足够的空间以免机械臂碰到障碍物停止运动,Baxter 工作空间分布参考图1.1~图1.4所示。

工作站设置

安装Ubuntu

建议安装版本为Ubuntu 14.04
具体Ubuntu安装指导详见: Installing Ubuntu

安装ROS

建议安装版本为ROS Indigo

1. 安装Ubuntu资源库
安装Ubuntu资源库使得允许“restricted”、“universe”和“multiverse”。可以根据Repositories/Ubuntu来完成这一步。
一般都已经安装好,只需确认安装即可

2. 建立sources.list

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'

3. 建立keys

$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -

4. 检查最新的Debians

$ sudo apt-get update

5. 安装 ROS Indigo Desktop Full

$ sudo apt-get install ros-indigo-desktop-full

6. 初始化rosdep

$ sudo rosdep init
$ rosdep update

7. 安装rosinstall

$ sudo apt-get install python-rosinstall

安装SDK

确定已经安装好Ubuntu系统和配置好ROS操作系统之后,我们就可以继续下面的学习了。

1. 安装依赖包

$ sudo apt-get update
$ sudo apt-get install git-core python-argparse python-wstool python-vcstools python-rosdep
ros-indigo-control-msgs ros-indigo-joystick-drivers

2. 安装Baxter SDK
使用wstool工作空间工具,会自动在Baxter Github中检查所有需要的源,并安装在ROS工作空间即ros_ws中。

$ cd ~/ros_ws/src
$ wstool init .
$ wstool merge
https://raw.githubusercontent.com/RethinkRobotics/baxter/master/baxter_sdk.rosinstall
$ wstool update

这一过程安装时间比较长,进行此过程的时候最好先使用VPN连接。如果电脑没有翻墙的话,很有可能安装不成功。

Source ROS
'''You must use ROS Indigo to use RSDK 1.2.0. Use command below.'''
# ROS Indigo
$ source /opt/ros/indigo/setup.bash

3. 编译与安装
这一步也需要在ros_ws路径下进行。

$ cd ~/ros_ws
$ catkin_make
$ catkin_make install

Hello Baxter示例测试

设计第一个Baxter的ros程序。

设置ROS环境

如果之前设置过ROS环境,那么在~/ros_ws文件目录下应该会有一个devel文件夹,如果还没有,则必须运行一遍下面的代码(如果已经有了,则可以跳过):

# Move to root of our catkin workspace
$ cd ~/ros_ws
$ source /opt/ros/indigo/setup.bash
$ catkin_make

接下来再source一下ROS环境设置脚本,也就是baxter.sh:

# Source baxter.sh script
$ . baxter.sh

在脚本中修改IP地址或主机名。

检查ROS连接

这一步,我们会检查Baxter机器人与我们的PC通信是否正常,也是我们用PC去控制Baxter的关键。

检查PC与ROS Master(Baxter)的连接

这一步是检查PC能否给ROS Masterfa送数据。
前文已经设置了baxter_hostname,我们只要检查是否ping通即可。代码如下:

$ ping 011606P0006.local

如果显示有数据通信,就说明与ROS Master的连接正常,继续下一步。

检查Baxter与开发工作空间PC的连接

这一步是想检查PC能否收到ROS Master发过去的命令。
首先用SSH远程登录ROS Master,在ROS Master上ping我们的PC机,看是否有通信。代码如下:

$ ssh ruser@<our ROS Master>
# Password:
rethink
# Example:
$ ssh [email protected]
# Now that we have SSH'd into the robot, verify that we are able to ping back to the development
PC
[email protected]:~$ ping <ROS_IP/ROS_HOSTNAME>
# Examples:
# ROS_IP
[email protected]:~$ ping 192.168.1.102

如果能ping通,说明连接正常,可以退出远程登录了。

[email protected]:~$ exit

查看ROS Topic

如果双向通信没有问题了我们就可以查看目前正在发生的ROS Topic了(关于ROS Topic,请查看ROS操作系统教程)

$ rostopic list

以上代码可以查看所有的ROS Topic,如果要查看特定的Topic,示例如下:

$ rostopic echo /robot/joint_states

使能Baxter

操作Baxter机器人之前,先要使能机器人。在baxter_tools SDK工具包中,提供了enable/disable/rest/stop机器人的API。使能机器人的代码如下:

$ rosrun baxter_tools enable_robot.py -e

运行一个示例程序

Rethink Robotics官方给我们提供了很多示例程序,大多是提供了Python与C++的调用接口,我们来运行joint_velocity_wobbler.py看看效果,更多关于这个实例的信息,可以查看Joint Velocity Wobbler Example Page

$ rosrun baxter_examples joint_velocity_wobbler.py

自己编写一个程序来运行Baxter

下面的示例是Hello Baxter程序,实现的功能是让Baxter机器人向我们挥手。
首先,使能Baxter机器人:

$ rosrun baxter_tools enable_robot.py -e

接着打开gedit编辑器,输入以下代码,并保存为hello_baxter.py

# Import the necessary Python modules
# rospy - ROS Python API
import rospy
# baxter_interface - Baxter Python API
import baxter_interface
# initialize our ROS node, registering it with the Master
rospy.init_node('Hello_Baxter')
# create an instance of baxter_interface's Limb class
limb = baxter_interface.Limb('right')
# get the right limb's current joint angles
angles = limb.joint_angles()
# print the current joint angles
print angles
# reassign new joint angles (all zeros) which we will later command to the limb
angles['right_s0']=0.0
angles['right_s1']=0.0
angles['right_e0']=0.0
angles['right_e1']=0.0
angles['right_w0']=0.0
angles['right_w1']=0.0
angles['right_w2']=0.0
# print the joint angle command
print angles
# move the right arm to those joint angles
limb.move_to_joint_positions(angles)
# Baxter wants to say hello, let's wave the arm
# store the first wave position
wave_1 = {'right_s0': -0.459, 'right_s1': -0.202, 'right_e0': 1.807, 'right_e1': 1.714, 'right_w0': -
0.906, 'right_w1': -1.545, 'right_w2': -0.276}
# store the second wave position
wave_2 = {'right_s0': -0.395, 'right_s1': -0.202, 'right_e0': 1.831, 'right_e1': 1.981, 'right_w0': -
1.979, 'right_w1': -1.100, 'right_w2': -0.448}
# wave three times
for _move in range(3):
limb.move_to_joint_positions(wave_1)
limb.move_to_joint_positions(wave_2)

添加执行权限:

chmod +x hello_baxter.py

最后在Terminal中运行编辑好的python程序:

$ python hello_baxter.py

之后就可以看到Baxter在挥手了。

仿真平台环境配置

Baxter支持Gazebo仿真平台,详细的话题信息可以参见官方wiki。这里介绍Gazebo的安装方法。

依赖安装

$ sudo apt-get install gazebo2 ros-indigo-qt-build ros-indigo-driver-common ros-indigo-gazebo-ros-control ros-indigo-gazebo-ros-pkgs ros-indigo-ros-control ros-indigo- control-toolbox ros-indigo-realtime-tools ros-indigo-ros-controllers ros-indigo-xacro python-wstool ros-indigo-tf-conversions ros-indigo-kdl-parser

模拟器安装

下载

$ cd ~/ros_ws/src
$ wstool init .
$ wstool merge https://raw.githubusercontent.com/RethinkRobotics/baxter_simulator/master/baxter_simulator.rosinstall
$ wstool update

编译

$ source /opt/ros/indigo/setup.bash
$ cd ~/ros_ws
$ catkin_make
$ catkin_make install 
$ cp src/baxter/baxter.sh . 

注意应该修改新的baxter.sh中的IP地址

之前存在的一个BUG

早期的Baxter/Gazebo的版本升级导致了一些文件的路径不匹配产生了一些问题。如果你是按照本文安装最新版的应该不会遇到这个问题。关于这个问题的讨论见链接

启动

在启动时添加sim选项即可进入仿真环境

$ ./baxter.sh sim 

即可进入仿真环境

使用gazebo显示机器人世界

roslaunch baxter_gazebo baxter_world.launch

官网提示要看到以下代码就认为初始化完成:

[ INFO] [1400513321.531488283, 34.216000000]: Simulator is loaded and started successfully
[ INFO] [1400513321.535040726, 34.219000000]: Robot is disabled
[ INFO] [1400513321.535125386, 34.220000000]: Gravity compensation was turned off

但是实际上输出的信息非常多,很容易淹没了。大概的判断就是全部界面(一个Gazebo窗口,一个控制器(就是手臂上的那个)的模拟器)都出来了,语句停止在

[ INFO] [1541658565.449163942, 595.950000000]: left_joint_position_controller was started and left_joint_velocity_controller and left_joint_effort_controller were stopped succesfully

应该就可以了。

然后打开一个终端,进入仿真环境,就可以像实际使用一样来操控仿真的机器人了。

rosrun baxter_tools enable_robot.py -e #使能机器人

在仿真环境中,ROS Master是本机的地址。

仿真不依赖于机器人实体,可以在实验室之外对想法进行验证。比如,可以自己设置仿真环境,加入桌子,棋子等元素(而不必真实地去购置这些器件)。另外,仿真也方便了一些重复性的实验,无需人的干预,即可自动完成。

但是,由于实际环境并不是仿真环境能够完全模拟的,仿真并不能代替实际实验。一般可以在仿真上对代码/功能进行验证,随后再在机器人上进行实地测试。

实验结果

  1. 成功安装Ubuntu系统,配置ROS操作系统,并安装SDK。
  2. 成功编写Hello Baxter程序,并能控制Baxter机器人挥手的动作。
  3. 成功配置仿真平台环境。