- 1个 Baxter Research Robot
- 1台PC机或笔记本,安装好Ubuntu系统(推荐Ubuntu16.04安装ROS kinetic)
- 1个无线路由器(千兆网口)
- 2根网线
# 1.创建ROS工作空间 mkdir -p ~/ros_ws/src # 2.source ROS # 在每次打开终端时,都先要运行source ROS命令才能运行ros相关命令,为了避免这一繁琐过程,可以事先在.bashrc文件(Home目录下)中添加这条命令 source /opt/ros/kinetic/setup.bash # 3.编译与安装 cd ~/ros_ws catkin_make catkin_make install # 4.安装依赖 sudo apt-get update sudo apt-get install git-core python-argparse python-wstool python-vcstools python-rosdep ros-kinetic-control-msgs ros-kinetic-joystick-drivers # 5. 安装Baxter SDK cd ~/ros_ws/src/ wstool init wstool merge https://raw.githubusercontent.com/RethinkRobotics/baxter/master/baxter_sdk.rosinstall wstool update
在国内用网,执行到 wstool update 这一步可能会失败,在执行 wstool update之前,打开~/ros_ws/.rosinstall,在每个uri的前面加上 https://ghproxy.com/(访问github加速网址)
source /opt/ros/kinetic/setup.bash cd ~/ros_ws/ catkin_make catkin_make install3.配置Baxter 通信 3.1 网络配置
Baxter 机器人网络连接参考网站:http://sdk.rethinkrobotics.com/wiki/Networking
将 Baxter 机器人与 PC 通过网线连接方式连接到路由器局域网上
PC 既可以通过 WIFI 连接到与 Baxter 相连的无线路由器,也可以通过网线连接路由器,我们通常是使用有限路由器连接
# 1.下载 baxter.sh,改变用户权限 wget https://github.com/RethinkRobotics/baxter/raw/master/baxter.sh chmod u+x baxter.sh # 2.编辑 baxter.sh,与自己的 Baxter 信息匹配 cd~/ros_ws/ gedit baxter.sh # 3.编辑 baxter_hostname > # Specify Baxter's hostname > baxter_hostname="011xxxxxxxx.local" //baxter序列号见机器人背部接线处附近 # 4.编辑 your_hostname 或 your_ip(二选一) # 推荐编辑 your_hostname ,此处不介绍更改 your_ip your_hostname="cothink-Inspiron-5488.local" # 5.修改ros_version ros_version="kinetic" # 6.更改完以上内容,保存 baxter.sh # 7.初始化 SDK 环境 # 每次打开新的终端,执行命令时,应该首先按下面步骤初始化 Baxter 机器人 SDK 运行环境 cd ~/ros_ws/ ./baxter.sh
hostname 可以通过在终端输入 hostname 命令得到,也可以点击 Ubuntu 右上角电源键中关于这台电脑(about This Computer)得到,设备名称(device name)对应的值为 hostname
env | grep ROS
通过上述命令,会返回一些 ROS 相关的配置信息,关注以下几个字段即可
ROS_MASTER_URI — 机器人的主机名(baxter_hostname)
ROS_IP — 工作站IP(如果没有使用 ROS_HOSTNAME 模式这里应该包含工作站的IP地址,否则此项不可见)
ROS_HOSTNAME — PC的主机名(your_hostname)(如果没有使用ROS_IP模式, 这里应
该包含你的PC的主机名(your_hostname),否则此项不可见)
至此,工作空间配置就全部完成了
4.Hello Baxter 4.1 设置ROS环境如果之前设置过ROS环境,那么在 ~/ros_ws 文件目录下应该会有一个 devel 文件夹,如果已经有了,可以跳过下面的代码(当然重复运行一次下面的代码也是没问题的),如果还没有此文件夹,那必须运行一遍下面的代码
cd ~/ros_ws source /opt/ros/kinetic/setup.bash catkin_make
接下来再 Source 一下 ROS 环境设置脚本,也就是 baxter.sh
./baxter.sh4.2 检查ROS连接 4.2.1 检查PC与ROS Master(Baxter)的连接
这一步是检查PC能否给ROS Master发送数据
ping 011506P0014.local
如果显示有数据通信,就说明与ROS Master的连接正常,继续下一步
4.2.2 检查Baxter与开发工作空间PC的连接这一步是想检查PC能否收到ROS Master(Baxter)发过去的命令
首先用SSH远程登录ROS Master,在ROS Master上ping我们的PC机,看是否有通信。
ssh ruser@# 密码: rethink ssh ruser@011506P0014.local # 现在我们SSH登录 到了机器人,我们可以验证往回Ping 开发PC是否可行 ruser@011506P0014.local:~$ ping # 例子: # ROS_IP ruser@011506P0014.local:~$ ping 192.168.1.102 或者 ruser@011506P0014.local:~$ ping cothinkTab.local
如果能ping通,说明连接正常,可以退出远程登录了。
ruser@011506P0014.local:~$ exit4.3 查看ROS Topic
如果双向通信没有问题了,我们就可以查看目前正在发生的ROS Topic了
rostopic list4.4 使能Baxter
操作 Baxter 机器人之前,先要使能机器人。
在baxter_tools SDK工具包中,提供了 “使能enable/反使能disable/重置reset/停止stop” 机器人的API。
这在急停按钮(E-STOP)按下后是必需执行的。
必须使能 Baxter才能主动控制任何电机。
rosrun baxter_tools enable_robot.py -e
输出的结果显示 Robot Enabled 表示已经成功使能 Baxter 机器人
4.5 运行一个示例程序roscore # 新开一个终端 rosrun baxter_examples joint_velocity_wobbler.py4.6 自己编写一个程序来运行Baxter
写一个 Hello Baxter 程序,实现让 Baxter 机器人向我们挥手的功能
4.6.1 使能机器人rosrun baxter_tools enable_robot.py -e4.6.2 编写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)
# quit
quit()
在Terminal中运行编辑好的python程序
python hello_baxter.py
此时可以看到 Baxter 做了一个招手的动作。



