Baxter是 Rethink Rbotics生产的一款双臂机器人。Baxter每个手臂有7个自由度,具有一系列关节执行器。
Baxter能安全的在人周围进行作业,无需设置安全边界。因为其关节组件通过系列弹性制动器(series elastic actuators)组成,在发动机/传动装置和执行器之间有一条弹簧,可以监测外部的作用力并反馈。
研究型的Baxter提供了运行于远程计算机上的SDK程序,SDK程序提供了开源的ROS API,通过API运行ROS命令和脚本,对Baxter进行操作。
名词解释:
SDK:Software Development Kit ,软件开发工具包。
API:Application Programming Interface,应用编程接口,是操作系统留给应用程序的一个调用接口。
Baxter模拟器是开源的。
Baxter模拟器在ROS的元包baxter_simulator中。
Baxter的URDF文件用于生成模拟的Baxter模型。
功能包baxter_sim_hardware提供硬件仿真借口。可以用rqt修改位置和速度。
功能包baxter_sim_controllers提供手臂和头部的控制器。
Baxter模拟器可以用于rviz和MoveIt。
肩部、肘部、腕部的旋转关节、俯仰关节共有7个
Baxter的控制模式有:关节位置控制、关节速度控制、关节扭矩控制、原始关节位置控制。关节位置控制是最最主要的控制模式。
手臂有两类抓手:电动抓手和吸盘抓手。
Baxter手臂袖口传感器:每一个手臂有一个集成摄像头、一个红外传感器、一个3轴加速度计
1rad=57.3º
90º=1.571rad
(注意:baxter只能安装在Ubuntu14.04,其对应ROS发行版本为indigo)
对于Baxter的SDK包,存放在另一个工作空间baxter_ws。
1)创建catkin工作空间目录并初始化。
用户级安装:在~/下安装。
mkdir -p ~/baxter_ws/src
cd ~/baxter_ws/src
catkin_init_workspace
Creating symlink "/home/battery/baxter_ws/src/CMakeLists.txt" pointing to "/opt/ros/kinetic/share/catkin/cmake/toplevel.cmake"
系统级安装:供所有用户进行访问,安装在计算机上而非home
sudo makdir -p /opt/baxter_ws/src
cd /opt/baxter_ws/src
catkin_init_workspace
2)构建工作空间
cd ~/baxter_ws
catkin_make
3)添加源
source ~/baxter_ws/devel/setup.bash
echo "source ~/baxter_ws/devel/setup.bash" >> ~/.bashrc
4)检查
echo $ROS_PACKAGE_PATH
若已添加,则会看到/home/
6)安装依赖
安装BDK的依赖。
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
7)使用wstool
wstool检查是否已经将所有要用的Baxter SDK功能包都下载下来
( wstool is a command to manipulate ROS workspaces. )
wstool初始化:在src中添加.rosinstall文件
cd ~/baxter_ws/src
wstool init
Writing /home//baxter_ws/src/.rosinstall
wstool merge :把另一个配置并入工作空间
wstool merge http://raw.githubusercontent.com/RethinkRobotics/baxter/master/baxter_sdk.rosinstall
wstool update
8)构建、安装工作空间
cd ~/baxter_ws
catkin_make
catkin_make install
1)安装功能包
sudo apt-get update
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 ros-indigo-tf-conversions ros-indigo-kdl-parser
安装的功能包:
gazebo2:用于ROS的gazebo修正版本
qt_build:
driver_common:提供对键盘和手柄支持的驱动和输出设备的驱动
gazebo_ros_control、ros_control、control_toolbox、ros_controller:提供用于模拟器的模拟控制软件和实时控制软件
gazebo_ros_pkgs:提供了gazebo和ros的接口,能在gazebo环境下对机器人模拟
realtime_tools:提供了实时发布器将实时线程的消息发布到某个主题
xacro:通过Baxter的URDF生成robt_description参数
tf_conversions:和kdl_parser提供了Baxter的坐标变换支持。tf_conversions提供了在变换库中所需要的数据类型变换程序,kdl_parser提供从URDF构建完整的KDL树所需的工具
KDL:Kinematics and Dynamics Library,运动学和动力学库
2)使用wstool工具
用wstool检查是否已经将所有需要用的Baxter模拟器功能包下载并保存到了baxter工作空间的源代码目录下
cd ~/baxter_ws/src
wstool init
wstool merge https://raw.githubusercontent.com/RethinkRobotics/baxter_simulator/master/baxter_simulator.rosinstall
wstool update
3)构建、安装工作空间
cd ~/baxter_ws
catkin_make
catkin_make install
Baxter SDK需要通过baxter.sh文件来建立机器人与工作站之间的连接。
Baxter模拟器也需要使用baxter.sh文件,该文件建立一种模式,对ros环境变量进行设置,以识别工作站的主机。
baxter文件脚本包含了服务于baxter模拟器的专用钩子。
1)复制文件到/baxter_ws,修改为允许所有用户的权限。
cp ~/baxter_ws/src/baxter/baxter.sh ~/baxter_ws
cd ~/baxter_ws
chmod +x baxter.sh
2)打开baxter文件,修改ip或主机名。
用ifconfig
查看ip地址,用hostname
查看主机名。
需要修改的参数名为your_ip或your_hostname。此参数会把主机IP或主机名指定到ROS_IP或者ROS_HOSTNAME环境变量中。(若都指定,ROS_HOSTNAME优先)
此外,参数ros_vertion=indigo.
MoveIt是用于路径规划的ros工具。
1)将MoveIt软件下载到/baxter_ws/src/
cd ~/baxter_ws/src
git clone https://github.com/ros-planning/moveit_robots.git
sudo apt-get update
sudo apt-get install ros-indigo-moveit
git是用来管理文件的程序
2)将新下载的软件编译为整体
cd ~/baxter_ws
catkin_make
3)检查功能包
ls ~/baxter_ws/src
正确显示应该有7个功能包和一个cmakelist文件
1)检查ROS的环境变量
env | grep ROS
可以看到ROS_MASTER_URI和ROS_IP or ROS_HOSTNAME
2)启动模拟器
切换到工作空间。
运行参数为sim的baxter.sh脚本,开头出现[baxter - http://localhost:11311] ,说明已经开始与模拟的Baxter进行对话了。
启动控制器,开启模拟。
cd ~/baxter_ws
./baxter.sh sim
roslaunch baxter_gazebo baxter_world.launch
3)打开新的终端
cd ~/baxter_ws
./baxter_sh sim
4)查看状态,使能Baxter,确认状态
rosrun baxter_tools enable_robot.py -s
rosrun baxter_tools enable_robot.py -e
rosrun baxter_tools enable_robot.py -s
4)设置手臂位置
rosrun baxter_tools tuck_arms.py -u
(tuck:折叠)
代码链接
https://github.com/PacktPublishing/ROS-Robotics-By-Example/tree/master/Chapter_5_code/ros_robotics