moveit!学习心得(一)机械臂urdf建模

首先需要在你的主目录新建一个工作空间,名字就随便取,比如我取的是rm_eng

 然后再在新建的工作空间下创建一个名为src的文件夹,用来存放具体功能包的源码。创建完成后,我们要对其进行一个初始化,在src文件夹下打开终端,并输入

catkin_init_workspace

接下来我们就可以到我们的工作空间rm_eng下进行编译,输入

catkin_make

编译完成后,会生成build和devel两个文件夹

然后我们要设置环境变量,在我们当前页面打开终端,并输入指令

source devel/setup.bash

 因为我们用的终端是bash,所以尾缀是bash。如果用的是zsh的话,把bash改为zsh即可。

接下来我们要在src下创建机械臂模型的一个功能包,在src下打开终端,输入指令

catkin_create_pkg eng_arm roscpp tf urdf xacro

其中,catkin_create_pkg是创建功能包的指令,eng_arm是我们所建立功能包的名字,后面的roscpp等是我们所需要用到的各种依赖。

创建后我们会得到这样四个文件(.rviz的文件是后来创建的,这里可以不用管他)

 然后到eng_arm下再编译一次,再设置一次环境变量。

以上的两个文件夹,urdf用来存放机器人模型的urdf或xacro文件,launch用来保存相关启动文件。

 故在urdf文件夹下,我们可以用gedit生成一个.xacro的文件用来描述我们机械臂的模型。

gedit eng_arm.xacro

在.xacro文件中我们可提前设置颜色,pai以及惯性矩阵等常量。

示例如下

<material name="White">
     <color rgba="1 1 1 1"/>
</material>

<xacro:property name="M_PI" value="3.14159"/>

设置link如下所示

<link name="link1" >
        <visual>
            <origin xyz="-${link1_len/2} 0 0" rpy="0 ${M_PI/2} 0" />
            <geometry>
                <cylinder radius="${link1_width}" length="${link1_len}"/>
            </geometry>
            <material name="Blue" />
        </visual>
        <collision>
            <origin xyz="-${link1_len/2} 0 0" rpy="0 ${M_PI/2} 0" />
            <geometry>
                <cylinder radius="${link1_width}" length="${link1_len}"/>
            </geometry>
        </collision>
        <xacro:inertial_matrix mass="1"/>
    </link>

其中的xyz为link在xyz轴的偏移量,而rpy则是其在不同轴角度的偏移量。cylinder表示该link为圆柱体,radius为圆柱体半径,length为长度。

设置joint如下所示

<joint name="joint2" type="prismatic">
        <parent link="link1"/>
        <child link="link2"/>
        <origin xyz="-${link1_len} 0 0" rpy="-${M_PI/2} 0 ${M_PI/2}" />
        <axis xyz="1 0 0" />
        <limit effort="300" velocity="1" lower="-0.5" upper="0.5" />
        <dynamics damping="50" friction="1"/>
</joint>

在我所设置的joint2中,link1为父link,link2为子link。prismatic表示其为一个滑移关节,axis描述的是该关节往那个轴向进行运动。

写完.xacro文件后,我们还需要一个启动文件,也就是launch文件。因此,我们可以在launch文件夹下创建arm_start.launch文件。

<launch>
    <arg name="model" />
    <!-- 加载机器人模型参数 -->
    <param name="robot_description" command="$(find xacro)/xacro --inorder $(find eng_arm)/urdf/eng_arm.xacro" />

    <!-- 设置GUI参数,显示关节控制插件 -->
    <param name="use_gui" value="true"/>

    <!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
    <node name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
    
    <!-- 运行robot_state_publisher节点,发布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
    
    <!-- 运行rviz可视化界面 -->
    <node name="rviz" pkg="rviz" type="rviz" />
</launch>

然后我们就可以运行我们的机械臂模型哩。

在终端输入

roslaunch eng_arm arm_start.launch

我们就可以看到我们的机械比模型还有一个控制插件。

但是如果你是第一次进这个rviz,你会惊奇的发现没有模型。

那是因为你并没有加入机械臂的模型,只要点击左下角的add,并选中RobotModel,点击ok,再将你左上角的fixed frame选为你的底座link即可,比如我的是base_link。

但是如果每次进rviz都要这样点的话就很麻烦,那你就可以点击左上角file中的save config as,将这个rviz保存下来。只要将我们launch文件中的这段话改成这样,那我们就不用每次进去都点了。

<node name="rviz" pkg="rviz" type="rviz" args="-d $(find eng_arm)/eng_arm.rviz" required="true" />

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是通过Moveit!SetupAssistant对已经编写的URDF模型文件进行配置的操作步骤: 1. 打开终端,输入以下命令启动MoveIt!Setup Assistant: ``` roslaunch moveit_setup_assistant setup_assistant.launch ``` 2. 在“Welcome to MoveIt! Setup Assistant”对话框中,选择“Create New MoveIt! Configuration Package”,然后点击“Create”按钮。 3. 在“Robot Description”页面中,点击“URDF”选项卡,并选择您要配置的URDF文件。如果您的URDF文件还没有安装,可以通过点击“Package Resource”选项卡来安装它。 4. 在“Self-Collision”选项卡中,您可以选择是否启用自我碰撞检测。如果您的机器人有自我碰撞问题,建议您启用此选项并进行相应的设置。 5. 在“Planning Groups”选项卡中,您可以定义您的机器人的规划组。这些规划组是MoveIt!用来计划运动的重要组成部分。您可以选择默认的规划组,也可以创建自己的规划组。 6. 在“Virtual Joints”选项卡中,您可以定义虚拟关节,这些关节不会被机器人实际使用,但是可以用来方便地控制机器人的姿态。 7. 在“End Effectors”选项卡中,您可以定义机器人的末端执行器,并设置其相关参数。如果您的机器人没有末端执行器,可以跳过此步骤。 8. 在“Motion Planning”选项卡中,您可以设置MoveIt!的运动规划器,并调整其相关参数以优化机器人的运动规划效果。 9. 在“Configuration Files”选项卡中,您可以生成MoveIt!配置包,并保存在您的ROS工作空间中。 10. 最后,点击“Generate Package”按钮,生成MoveIt!配置包,并将其保存在您的ROS工作空间中。 以上就是通过MoveIt!Setup Assistant对已经编写的URDF模型文件进行配置的详细操作步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值