1.机械臂UR的控制包括两种,一种是通过终端控制 比较笨重不方便,用于测试使用,另一种是通过ros例程包,订阅位置信息控制机械臂的移动,moveit自动规划机械臂的路径,并躲过设置好的盒子(box)
手部RG2机械手的控制一种是通过终端的程序,在大终端中创建空程序 、结构、RG2、命令、带宽。
2.步骤
#roslaunch ur_control ur10_control.launch robot_ip:=192.168.2.24
将机械臂与本地路由器的地址相同连接起来
#roslaunch ur10_rg2_moveit_config demo.launch
启动rviz 在里面利用moveit进行仿真
#rosrun ur10_rg2_moveit_config moveit_controller.py
在这里添加限制box,此处是初始设置 手动测量位置后加了底座box(模仿麦轮),加了三面墙壁(模仿电梯)。
#rosrun ur10_rg2_moveit_config new_moveit_controller.py
在new_moveit_controller.py为总的控制程序,包含机械臂和机械手,其中在def go_to_pose_goal(self):函数中定义运动的位置。设计包含两种场景,一种是用于机械臂抓取物体的,另一种是在电梯中按按钮。
3.得到当前机械手位置的程序
current_pose = self.group.get_current_pose().pose
print self.group.get_current_pose()
4.电梯按钮的控制机械臂手程序,共设置button0.1.2三步 分别是到达电梯按钮正前方、合住机械手呈一条线、向正前方伸前点按钮、回来。
print "============ Press `Enter` to plan button0"
raw_input()
# rospy.sleep(0.5)
q = tf.transformations.quaternion_from_euler(math.radians(-90.0), 0.0, 0.0)
pose_goal.orientation.x = q[0]
pose_goal.orientation.y = q[1]
pose_goal.orientation.z = q[2]
pose_goal.orientation.w = q[3]
pose_goal.position.x = 0.6
pose_goal.position.y = -0.65
pose_goal.position.z = 1.40
group.set_pose_target(pose_goal)
plan00=group.plan()
print "============ Press `Enter` to go button0"
raw_input()
# rospy.sleep(0.5)
plan = group.go(wait=True)
合成一条线
print "============ Press `Enter` to rg2"
raw_input()
# rospy.sleep(0.5)
self.request.target_width.data=0.0
resp1=self.val(self.request)
此处为实际已经测量好位置,之后根据深度相机的位置以及标定的柱状物体位置做抓取动作。
5.抓取百事可乐罐程序
print "=========&#