使用moveit_setup_assistant配置机械臂(上)
观察机械臂模型
上一节中拿到了sunday_description功能包,将功能包放进工作空间进行编译,可将工作空间路径写进.bashrc文件中,这样就不必每次都source了
例如:source ~/catkin_ws/devel/setup.bash --extend
编译通过后,修改sunday_description/launch/display.launch文件将<arg name="gui" default="False" />
改为<arg name="gui" default="Ture" />
,运行launch文件
roslaunch sunday_description display.launch
可以看到机械臂模型和控制关节运动的gui,若机械臂模型并不是竖直向上的,而是横着的或者倒的,请重新在solidworks中导出urdf模型,在solidworks中模型位置竖直方向为Z轴正向。
修改urdf文件,并转为xacro
转xacro
观察urdf模型无误后,复制sunday_description.urdf文件,并将其命名为sunday.xacro
修改<robot name="sunday_description">
为<robot name="sunday" xmlns:xacro="http://ros.org/wiki/xacro">
添加base_footprint
<link name="base_footprint">
</link>
<joint name="base_link2base_footprint" type="fixed">
<parent link="base_footprint" />
<child link="base_link"/>
<origin xyz="0 0 0.032" rpy="0 0 0" />
</joint>
修改惯性参数
将每一个机械臂关节link的惯性参数修改为:
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1" />
这里修改为1是较为合理的选择,各位也可以参考之前的博客,将机械臂关节看做是圆柱体并计算大致惯性参数。
将机械臂在world中固定
这一段可以在使用moveit配置完后再添加
<!-- Used for fixing robot to Gazebo 'base_link' -->
<link name="world"/>
<joint name="fixed" type="fixed">
<origin
xyz="0 0 1.1"
rpy="0 0 0" />
<parent link="world"/>
<child link="base_footprint"/>
</joint>
添加d435摄像头
将原先的摄像头部分注释,添加realsense_ros_gazebo功能包中的realsense摄像头
<!-- <xacro:include filename="$(find sunday_description)/urdf/realsense/realsense.xacro"/> -->
<xacro:include filename="$(find realsense_ros_gazebo)/xacro/depthcam.xacro"/>
<xacro:realsense_d435 sensor_name="camera" parent_link="link_5" rate="30">
<origin xyz="-0.00068847 -0.06 -0.13" rpy="-3.14 0 -1.5708"/>
</xacro:realsense_d435>
添加ros_control插件
<!-- ros_control plugin -->
<gazebo>
<plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
<robotNamespace>/sunday</robotNamespace>
<robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
<legacyModeNS>true</legacyModeNS>
</plugin>
</gazebo>
添加传动
<!-- Transmissions for ROS Control -->
<xacro:macro name="transmission_block" params="joint_name">
<transmission name="tran1">
<type>transmission_interface/SimpleTransmission</type>
<joint name="${joint_name}">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
</joint>
<actuator name="motor1">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
</xacro:macro>
<xacro:transmission_block joint_name="joint_1"/>
<xacro:transmission_block joint_name="joint_2"/>
<xacro:transmission_block joint_name="joint_3"/>
<xacro:transmission_block joint_name="joint_4"/>
<xacro:transmission_block joint_name="joint_5"/>
<xacro:transmission_block joint_name="joint_6"/>
添加吸盘插件
<!-- vacuum_gripper plugin -->
<gazebo>
<plugin name="gazebo_ros_vacuum_gripper" filename="libvacuum_plugin.so">
<robotNamespace>/sunday/vacuum_gripper</robotNamespace>
<bodyName>link_6</bodyName>
<topicName>grasping</topicName>
<maxDistance>0.05</maxDistance>
<minDistance>0.03</minDistance>
</plugin>
</gazebo>
为吸盘添加参数
为吸盘link6添加摩擦等属性
<gazebo reference="link_6">
<mu1>50</mu1>
<mu2>50</mu2>
<minDepth>0.003</minDepth>
<maxVel>0</maxVel>
<kp>1000000.0</kp>
<kd>1.0</kd>
<material>Gazebo/Grey</material>
</gazebo>
完整代码可见开源代码sunday_description/urdf/sunday.xacro
小结
该小节主要完成了机械臂xacro文件的配置,下一节将用moveit_setup_assistant对该xacro文件进行配置。