ROS的基于ArbotiX与Moveit的机械臂环境搭建

本文详述了在ROS环境中使用Moveit和ArbotiX进行机械臂控制及运动规划的方法,包括模型建立、关节控制、正逆向运动学应用等关键步骤。

本文档主要捋清楚机械臂控制包的建立过程,不涉及具体的代码,按照流程的话,代码基本都是自动生成的

 

1.说明

Moveit是ROS软件的机械臂控制的功能包,如果想进行机械臂的运动规划的话,肯定是必不可少的;

ArbotiX可以认为是一个机械臂硬件的驱动包,同时本身还带有机械臂的仿真功能。

我的理解是,如果想实现通过代码的控制机械臂的话(正向运动学,控制个轴节点,逆向运动学,通过终端位置控制)目前ArbotiX是一个很好的选择。

两者的关系基本情况就是这样。

 

2.该环境的搭建可以分成三个包

(1)通过solidworks导出的机械臂模型的包:arm

也可以自己编写xacro文件,不过这里采用的是solidwords导入,具体方法可以自己网上搜;

需要注意一点,生成包的时候需要改名字为arm,如果不修改,导出的包的名字与solidwoks的工程名相同,后期想手动修改也可以(要把CMakeLists.txt   package.xml还有urdf文件里的名字统统替换掉)

(2)通过setup-assistant配置的moveit的功能包,arm_moveit

(3)运动规划包,arm_planning

下面自己建立的一些文件会放置在这个包中

 

3.搭建步骤

(1)在通过setup-assistant配置好arm_moveit包后,可以通过如下命令进行验证

roslaunch arm_moveit  demo.launch

如果弹出的窗口出现机械臂模型,说明成功;

(2)添加arbotix关节控制器

首先在arm/config中新建arm.yaml文件

joints: {
    joint1: {id: 1, neutral: 205, max_angle: 269.6, min_angle: -269.6, max_speed: 90},
    joint2: {id: 2, max_angle: 180, min_angle: -180.0, max_speed: 90},
    joint3: {id: 3, max_angle: 180, min_angle: -180.0, max_speed: 90},
    joint4: {id: 4, max_angle: 180, min_angle: -180.0, max_speed: 90},
    joint5: {id: 5, max_angle: 180, min_angle: -180.0, max_speed: 90},
    joint6: {id: 6, max_angle: 180, min_angle: -180.0, max_speed: 90},

}

controllers: {
    arm_controller: {type: follow_controller, joints: [joint1, joint2, joint3,joint4, joint5, joint6], action_name: arm_controller/follow_joint_trajectory, onboard: False }
}

然后在arm_planning/launch中创建fake_arm.launch文件

<launch>
   <!-- 不使用仿真时间 -->
   <param 
       name="/use_sim_time" 
        value="false" />   
   <!--arg
       name="gui"
        default="False" /-->

   <!-- 启动arbotix driver-->
    <arg 
       name="sim" 
        default="true" />

   <param
      name="robot_description"
      textfile="$(find arm)/urdf/inffos_arm.urdf" />                            /////调用的生成的urdf文件

   <node 
       name="arbotix" 
        pkg="arbotix_python" 
        type="arbotix_driver" 
        output="screen" >
      <rosparam 
          file="$(find arm)/config/arm.yaml" command="load" />         /////调用的刚才新建的arm.yaml
      <param 
           name="sim" 
            value="true"/>
   </node>

   <node
      name="joint_state_publisher"
      pkg="joint_state_publisher"
      type="joint_state_publisher" />

   <node 
       pkg="robot_state_publisher" 
       type="robot_state_publisher" 
       name="rob_st_pub" />

   <!-- 启动rviz -->
   <node 
      name="rviz" 
       pkg="rviz" 
       type="rviz" 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值