阿里云开发者社区

电脑版
提示:原网页已由神马搜索转码, 内容由developer.aliyun.com提供.

Moveit + Gazebo实现联合仿真:ABB yumi双臂机器人( 二、双臂协同运动实现 )

2024-05-07169
版权
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介:Moveit + Gazebo实现联合仿真:ABB yumi双臂机器人( 二、双臂协同运动实现 )

1. 安装并配置好ROS、MoveIt和Gazebo。


2. 导入ABB YuMi双臂机器人模型到Gazebo。


3. 使用MoveIt配置双臂机器人的URDF文件。


4. 编写一个Python脚本来实现双臂协同运动。



以下是一个简单的Python脚本示例,用于实现ABB YuMi双臂机器人的协同运动:



```python


#!/usr/bin/env python


# -*- coding: utf-8 -*-



import sys


import rospy


import moveit_commander


from moveit_msgs.msg import PlanningScene, PlanningSceneWorldReference


from gazebo_msgs.srv import SpawnModel, DeleteModel


from geometry_msgs.msg import PoseStamped



def main():


   # 初始化节点


   rospy.init_node('yumi_dual_arm_moveit', anonymous=True)



   # 初始化MoveIt指挥官


   moveit_commander.roscpp_initialize(sys.argv)



   # 创建双臂机器人的MoveGroupCommander对象


   left_arm = moveit_commander.MoveGroupCommander("left_manipulator")


   right_arm = moveit_commander.MoveGroupCommander("right_manipulator")



   # 添加双臂机器人到规划场景


   planning_scene = PlanningScene()


   scene_world_reference = PlanningSceneWorldReference()


   scene_world_reference.header.frame_id = "base_link"


   planning_scene.world_reference = scene_world_reference


   planning_scene.robot_states = [left_arm.get_current_state(), right_arm.get_current_state()]


   moveit_commander.planning_scene.publish(planning_scene)



   # 设置目标姿态


   target_pose = PoseStamped()


   target_pose.header.frame_id = "base_link"


   target_pose.pose.position.x = 0.5


   target_pose.pose.position.y = 0.0


   target_pose.pose.position.z = 0.5


   target_pose.pose.orientation.w = 1.0



   # 设置目标约束


   left_constraint = moveit_commander.Constraints()


   left_constraint.orientation_mask = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


   left_constraint.orientation_path_mask = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


   left_constraint.preferred_orientation = target_pose.pose.orientation


   right_constraint = moveit_commander.Constraints()


   right_constraint.orientation_mask = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


   right_constraint.orientation_path_mask = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


   right_constraint.preferred_orientation = target_pose.pose.orientation



   # 根据约束求解路径规划问题


   left_goal = left_arm.set_joint_value_target(left_constraint)


   right_goal = right_arm.set_joint_value_target(right_constraint)


   left_arm.set_max_velocity_scaling_factor(1.5)


   right_arm.set_max_velocity_scaling_factor(1.5)


   left_arm.set_start_state_to_current_state()


   right_arm.set_start_state_to_current_state()


   left_group = left_arm.go(wait=True)


   right_group = right_arm.go(wait=True)



   # 打印结果


   print("Left arm joint values: " + str(left_group.get_current_joint_values()))


   print("Right arm joint values: " + str(right_group.get_current_joint_values()))



   # 确保所有线程都已关闭


   moveit_commander.roscpp_shutdown()


   moveit_commander.os._exit(0)



if __name__ == '__main__':


   main()


```



这个脚本首先导入了所需的库,然后初始化了节点和MoveIt指挥官。接下来,它创建了两个MoveGroupCommander对象,分别用于控制ABB YuMi双臂机器人的左右臂。然后,它将双臂机器人添加到规划场景中,并设置了目标姿态和约束。最后,它使用这些约束来求解路径规划问题,并打印出最终的关节值。 


相关文章
|
1月前
|
数据可视化机器人Python
实例8:机器人的空间描述和变换仿真
本文是关于机器人空间描述和变换的仿真实验教程,通过Python编程和可视化学习,介绍了刚体的平动和转动、位姿描述、坐标变换等基础知识,并提供了具体的实验步骤和代码实现。实验目的是让读者通过编程实践,了解和掌握空间变换的数学原理和操作方法。
实例8:机器人的空间描述和变换仿真
|
1月前
|
传感器人工智能文字识别
OrangePi AIpro 机器人仿真与人工智能应用测评(下)
OrangePi AIpro 机器人仿真与人工智能应用测评(下)
571111
|
1月前
|
数据可视化机器人Python
实例9:四足机器人运动学正解平面RR单腿可视化
本文是关于四足机器人正向运动学(FK)的实例教程,通过Python编程实现了简化的mini pupper平面二连杆模型的腿部可视化,并根据用户输入的关节角计算出每个关节相对于基坐标系的坐标。
|
1月前
|
人工智能Ubuntu机器人
OrangePi AIpro 机器人仿真与人工智能应用测评(上)
OrangePi AIpro 机器人仿真与人工智能应用测评
|
1月前
|
机器人
MATLAB - 机器人任务空间运动模型
MATLAB - 机器人任务空间运动模型
|
1月前
|
机器人
PUN ☀️六、机器人基础设置:运动、相机、攻击与生命值
PUN ☀️六、机器人基础设置:运动、相机、攻击与生命值
|
1月前
|
数据可视化算法机器人
实例10:四足机器人运动学逆解可视化与实践
本文是关于四足机器人逆运动学(IK)的实例教程,介绍了逆运动学的概念、求解方法、多解情况和工作空间,并通过Python编程实现了简化的mini pupper平面二连杆模型的逆运动学可视化,包括单腿舵机的校准和动态可视化运动学计算结果。
|
1月前
|
XML传感器数据可视化
09 机器人仿真Gazebo实例
本文详细介绍了在ROS(机器人操作系统)中使用Gazebo进行机器人仿真的流程,包括安装Gazebo、创建URDF模型、使用xacro优化URDF、配置ROS_control以及为模型添加Gazebo属性和控制器插件,并提供了相应的示例代码。
|
1月前
|
机器人vr&ar
MATLAB - 移动机器人运动学方程
MATLAB - 移动机器人运动学方程
|
1月前
|
机器人Serverless
MATLAB - 机器人关节空间运动模型
MATLAB - 机器人关节空间运动模型

热门文章

最新文章

  • 1
    【AI 初识】人工智能在机器人和自动化中的作用是什么?
    173
  • 2
    【LLM】基于Stable-Diffusion模型构建可以生成图像的聊天机器人
    69
  • 3
    Serverless 应用引擎产品使用之在阿里云Serverless中,我想在钉钉机器人中使用函数计算的签名认证如何解决
    56
  • 4
    【专栏】机器人技术符合人类价值观,促进社会和谐发展,共创美好未来
    69
  • 5
    请问2024.4现在钉钉webhook机器人还可以向群内发送excel文件吗(不是发送链接)
    79
  • 6
    AI电销机器人系统源码部署之:freeswitch安装Linux
    146
  • 7
    【好玩AI】【Prompt】情人节了,用GPT写个【骂醒恋爱脑】的机器人跟自己对话吧
    185
  • 8
    AI电销机器人系统源码部署:freeswitch安装Windows
    82
  • 9
    简单几步,钉钉机器人秒变通义千问对话机器人
    545
  • 10
    【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
    293