ROS环境下Baxter机器人控制记录

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下操作。成功有如下红色部分!

                 

      

猜你喜欢

转载自blog.csdn.net/weixin_39090239/article/details/83312210