1、前记:
这篇博文为自己学习是的记录,做这一切的目的就是熟悉ROS环境下如何控制Baxter机器人做运动。以便将来对其控制的扩展,如基于视觉(单目,双目,或Kinect)交互的控制,基于leap motion的手势控制,基于语音交互的控制,基于手机APP的控制、基于MATLAB端控制baxter机器人、基于人机协作的控制、阻抗控制、柔顺控制(这些都只是自己一厢情愿的幻想而已,因为时间无情第一啊,自己又是一个渣渣,还没有大腿可以拥抱、、、、~_~//)。
2、使用步骤主要来自书:ROS RoboticsBy Example ,需要的私我。在csdn也可以下,只是积分太高--30个积分!
1)按照 打开gazebo进入baxter仿真环境运行简单例子中最后总结的步骤打开仿真器gazebo,到机器人使能这一步。
查看机器人状态:rosrun baxter_tools enable_robot.py -s
摇头:rosrun baxter_examples head_wobbler.py Ctrl+C结束
折叠的样子: rosrun baxter_tools tuck_arms.py -t
不折叠:rosrun baxter_tools tuck_arms.py -u
详细: http://sdk.rethinkrobotics.com/wiki/Tuck_Arms_Tool
摆动手臂Wobbling arms:rosrun baxter_examples joint_velocity_wobbler.py Ctrl+C 停止
键盘控制:rosrun baxter_examples joint_position_keyboard.py动画略
Python脚本控制:在目录下编写如下俩个py文件。
代码如下:home位的
#!/usr/bin/env python
"""
Script to return Baxter's arms to a "home" position
"""
# 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('Home_Arms')
# create instances of baxter_interface's Limb class
limb_right = baxter_interface.Limb('right')
limb_left = baxter_interface.Limb('left')
# store the home position of the arms
home_right = {'right_s0': 0.08, 'right_s1': -1.00, 'right_w0': -
0.67, 'right_w1': 1.03, 'right_w2': 0.50, 'right_e0': 1.18,
'right_e1': 1.94}
home_left = {'left_s0': -0.08, 'left_s1': -1.00, 'left_w0': 0.67,
'left_w1': 1.03, 'left_w2': -0.50, 'left_e0': -1.18, 'left_e1':
1.94}
# move both arms to home position
limb_right.move_to_joint_positions(home_right)
limb_left.move_to_joint_positions(home_left)
quit()
zreo位:
#!/usr/bin/env python # home_arms_zero.py 10/29/2015
#
"""
Script to return Baxter's arms to a "home zero" position
"""
# 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('Home_Arms')
# create instances of baxter_interface's Limb class
limb_right = baxter_interface.Limb('right')
limb_left = baxter_interface.Limb('left')
# store the home position of the arms
home_zero_right = {'right_s0': 0.0, 'right_s1': 0.00, 'right_w0':
0.00, 'right_w1': 0.00, 'right_w2': 0.00, 'right_e0': 0.00,
'right_e1': 0.00}
home_zero_left = {'left_s0': 0.0, 'left_s1': 0.00, 'left_w0':
0.00, 'left_w1': 0.00, 'left_w2': 0.00, 'left_e0': 0.00,
'left_e1': 0.00}
# move both arms to home position
limb_right.move_to_joint_positions(home_zero_right)
limb_left.move_to_joint_positions(home_zero_left)
quit()
然后在终端输入命令:python home_atm.py或python Zero.py 动画如下
记录和重现运动:rosrun baxter_examples joint_recorder.py -f armRoutine
在新的终端打开,进入目录,连接仿真器:
用键盘控制(也可以用Python代码)记录:rosrun baxter_examples joint_position_keyboard.py
记录结束Ctrl+C,记录的是记录代码键入到Ctrl+C的时间序列上的动作。
动作回放:rosrun baxter_examples joint_position_file_playback.py -f armRoutine 。。。等待(空闲时间的多余记录)
机器人(基于位置的)控制器调节:roslaunch baxter_sim_hardware baxter_sdk_position_rqt.launch
基于速度的调节:roslaunch baxter_sim_hardware baxter_sdk_velocity_rqt.launch 不建议调节:这里出错了!!!
先运行python home_atm.py之后关节状态显示:rostopic echo /robot/joint_states ctrl c结束。或在gazebo的节点树上查找。
左臂末端信息:rostopic echo /robot/limb/left/endpoint_state 或者以下
使Python代码可执行:chmod +x python home_atm.py
如果出现: [Errno 110] Right limb init failed to get current joint_states from robot/joint_states
则运行使能代码:rosrun baxter_tools enable_robot.py -e
2、模型树TF和Moveit
1)打开rviz:rosrun rviz rviz,继续操作: Fixed Frame (under Global Options)-----选择 base.
Add button -----选择Robot Model ---机器人模型出现;Add button ---选择TF----机器人TF模型树出现 ,在左侧节点树上勾选要显示的TF部件。
打开新终端,保存TF模型的PDF文件:rosrun tf view_frames 然后:evince frames.pdf 出现如下
MoveIt操作:参考: http://sdk.rethinkrobotics.com/wiki/MoveIt_Tutorial
然后:拖动一个臂运动,选择planning----plan-----execute
附: Baxter SDK安装: http://sdk.rethinkrobotics.com/wiki/Workstation_Setup
仿真器安装: http://sdk.rethinkrobotics.com/wiki/Simulator_Installation
MoveIt安装: http://sdk.rethinkrobotics.com/wiki/MoveIt_Tutorial 基本在ros_ws下操作。成功有如下红色部分!