环境:Ubuntu20.04 ros-noetic
先放上效果展示:

首先要先安装ROS 和 Moveit,ROS的安装就不说了,Moeit的安装参看官网教程
Getting Started — moveit_tutorials Noetic documentation
安装过程中,用到了命令:
rosdep update
最好在安装的时候能够科学上网
搭建单臂仿真平台主要分为4大步
1.准备urdf/xacro文件
2.通过moveit setup assistant进行配置
3.controller的配置
4.launch文件的编写
准备urdf/xacro文件
这里我采用了 panda机械臂的功能包,首先进行该功能包的安装,通过命令:
sudo apt install ros-noetic-franka-description
安装好之后呢就可以在目录/opt/ros/noetic/share/franka_description下找到要用的panda机械臂模型的xacro相关文件,这里在进行第二步之前呢,还需要对panda机械臂的xacro文件进行一点点修改,修改的目的主要是使模型具有gazebo仿真的相关标签和数据,这里可以直接使用我修改完成的。(需要安装franka-description包)
建议在moveit的工作空间下,新建一个功能包放置相关文件,比如
我在 moveit_ws/src下新建了panda_dual_arms的功能包,在panda_dual_arms/robot_description下放置了下面的模型文件left_arm.urdf
<?xml version="1.0" ?>
<robot name="left_arm">
<link name="world"/>
<joint name="left_base_to_world" type="fixed">
<parent link="world"/>
<child link="left_base"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
</joint>
<link name="left_base"/>
<joint name="left_arm_joint_base" type="fixed">
<parent link="left_base"/>
<child link="left_arm_link0"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
</joint>
<!-- sub-link defining detailed meshes for collision with environment -->
<link name="left_arm_link0">
<visual>
<geometry>
<mesh filename="package://franka_description/meshes/visual/link0.dae"/>
</geometry>
</visual>
<collision>
<geometry>
<mesh filename="package://franka_description/meshes/collision/link0.stl"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="-0.041018 -0.00014 0.049974"/>
<mass value="0.629769"/>
<inertia ixx="0.00315" ixy="8.2904e-07" ixz="0.00015" iyy="0.00388" iyz="8.2299e-06" izz="0.004285"/>
</inertial>
</link>
<!-- sub-link defining coarse geometries of real robot's internal self-collision -->
<link name="left_arm_link0_sc">
</link>
<!-- fixed joint between both sub-links -->
<joint name="left_arm_link0_sc_joint" type="fixed">
<origin rpy="0 0 0"/>
<parent link="left_arm_link0"/>
<child link="left_arm_link0_sc"/>
</joint>
<!-- sub-link defining detailed meshes for collision with environment -->
<link name="left_arm_link1">
<visual>
<geometry>
<mesh filename="package://franka_description/meshes/visual/link1.dae"/>
</geometry>
</visual>
<collision>
<geometry>
<mesh filename="package://franka_description/meshes/collision/link1.stl"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0.003875 0.002081 -0.04762"/>
<mass value="4.970684"/>
<inertia ixx="0.70337" ixy="-0.000139" ixz="0.006772" iyy="0.70661" iyz="0.019169" izz="0.009117"/>
</inertial>
</link>
<!-- sub-link defining coarse geometries of real robot's internal self-collision -->
<link name="left_arm_link1_sc">
</link>
<!-- fixed joint between both sub-links -->
<joint name="left_arm_link1_sc_joint" type="fixed">
<origin rpy="0 0 0"/>
<parent link="left_arm_link1"/>
<child link="left_arm_link1_sc"/>
</joint>
<joint name="left_arm_joint1" type="revolute">
<origin rpy="0 0 0" xyz="0 0 0.333"/>
<parent link="left_arm_link0"/>
<child link="left_arm_link1"/>
<axis xyz="0 0 1"/>
<limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/>
<safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/>
<dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/>
</joint>
<!-- sub-link defining detailed meshes for collision with environment -->
<link name="left_arm_link2">
<visual>
<geometry>
<mesh filename="package://franka_description/meshes/visual/link2.dae"/>
</geometry>
</visual>
<collision>
<geometry>
<mesh filename="package://franka_description/meshes/collision/link2.stl"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="-0.003141 -0.02872 0.003495"/>
<mass value="0.646926"/>
<inertia ixx="0.007962" ixy="-0.003925" ixz="0.010254" iyy="0.02811" iyz="0.000704" izz="0.025995"/>
</inertial>
</link>
<!-- sub-link defining coarse geometries of real robot's internal self-collision -->
<link name="left_arm_link2_sc">
</link>
<!-- fixed joint between both sub-links -->
<joint name="left_arm_link2_sc_joint" type="fixed">
<origin rpy="0 0 0"/>
<parent link="left_arm_link2"/>
<child link="left_arm_link2_sc"/>
</joint>
<joint name="left_arm_joint2" type="revolute">
<origin rpy="-1.5707963267948966 0 0" xyz="0 0 0"/>
<parent link="left_arm_link1"/>
<child link="left_arm_link2"/>
<axis xyz="0 0 1"/>
<limit effort="87.0" lower="-1.7628" upper="1.7628" velocity="2.175"/>
<safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-1.7628" soft_upper_limit="1.7628"/>
<dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/>
</joint>
<!-- sub-lin

本文档详细介绍了如何在Ubuntu 20.04和ROS Noetic环境下配置MoveIt! 用于Franka Panda机械臂的仿真。首先,安装ROS和MoveIt!,然后通过MoveIt Setup Assistant配置机械臂模型,包括自碰撞矩阵、规划组和末端执行器。接着,配置了joint_state_controller和trajectory_controller,并编写了launch文件以启动Gazebo仿真、MoveIt! 和控制器。最终,通过roslaunch命令启动整个系统并在rviz中进行规划演示。
最低0.47元/天 解锁文章
1893

被折叠的 条评论
为什么被折叠?



