Moveit的配置,使机械臂动起来

本文详细介绍如何在Ubuntu20.04中配置UR5机械臂的Moveit环境,包括机械臂下载、编译、Moveit配置步骤,以及设置ros_controllers.yaml和ros_controllers.launch文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu20.04机械臂的下载可以看我的博客:https://blog.youkuaiyun.com/weixin_64037619/article/details/125263672?spm=1001.2014.3001.5502

1、机械臂下载完成之后,进行编译。编译完成之后,我们需要打开"Moveit Setup  Assistant"。

2、Moveit的配置:

  (1)、往Moveit添加机器人模型

  (2)、碰撞检测

 (3)、添加虚拟关节

 (4)、配置机械臂夹爪的运动规划组

(5)、然后自定义机械臂位姿

(6) 、配置末端夹爪

 (7)、生成配置gazebo的urdf文件并复制粘贴进文件

 (8)、填写作者信息并且创建带moveit_config的包,并且导入。

 至此Moveit配置结束;详细内容及配置看官网:https://ros-planning.github.io/moveit_tutorials/

 最后进行编译。

3、(1)、打开刚刚创建的Moveit_config文件,然后打开config中的ros_controllers.yaml并添加以下代码

# Simulation settings for using moveit_sim_controllers
moveit_sim_hw_interface:
  joint_model_group: home
  joint_model_group_pose: gripper
# Settings for ros_control_boilerplate control loop
generic_hw_control_loop:
  loop_hz: 300
  cycle_time_error_threshold: 0.01
# Settings for ros_control hardware interface
hardware_interface:
  joints:
    - shoulder_pan_joint
    - shoulder_lift_joint
    - elbow_joint
    - wrist_1_joint
    - wrist_2_joint
    - wrist_3_joint
    - gripper_finger1_joint
  sim_control_mode: 1  # 0: position, 1: velocity
# Publish all joint states
# Creates the /joint_states topic necessary in ROS
joint_state_controller:
  type: joint_state_controller/JointStateController
  publish_rate: 50
controller_list:
  - name: "arm_controller"
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    default: true
    joints:
      - shoulder_pan_joint
      - shoulder_lift_joint
      - elbow_joint
      - wrist_1_joint
      - wrist_2_joint
      - wrist_3_joint
  - name: "gripper"
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    default: true
    joints:
      - gripper_finger1_joint

然后打开Moveit_config/launch/ros_controllers.launch修改下面代码:

<?xml version="1.0"?>
<launch>

  <!-- Load joint controller configurations from YAML file to parameter server -->
  <rosparam file="$(find ur5_dh_gripper_moveit_config)/config/ros_controllers.yaml" command="load"/>

  <!-- Load the controllers -->
  <node name="controller_spawner" pkg="controller_manager" type="controller_manager" respawn="false"
    output="screen" args="spawn joint_state_controller arm_controller"/>

</launch>

最后运行demo_gazebo.launch。

### Gazebo中机械可动但底盘不可动的解决方案 在Gazebo仿真环境中,如果遇到机械可以正常运动而底盘无法移动的情况,通常可能是由于以下几个原因引起的: #### 1. **惯性参数设置不正确** 如果底盘的`<inertial>`标签未正确配置,可能会导致其行为异常。例如,在URDF文件中,`<inertial>`部分定义了物体的质量、质心位置以及转动惯量矩阵。这些参数对于仿真的稳定性至关重要[^3]。 #### URDF中的惯性参数示例 ```xml <link name="base_link"> <inertial> <origin xyz="0 0 0" rpy="0 0 0"/> <mass value="10.0"/> <!-- 质量 --> <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/> </inertial> <visual>...</visual> <collision>...</collision> </link> ``` 需要特别注意的是,质量(`mass`)和转动惯量矩阵(`ixx`, `iyy`, `izz`等)应根据实际物理对象调整。错误的数值可能导致不稳定的行为或完全静止不动。 #### 2. **关节控制器未启用** 底盘通常是通过轮子或其他形式的驱动器来实现移动功能的。这依赖于ROS控制框架下的关节控制器(joint controller),如果没有正确加载相应的插件或者启动服务,则可能造成底盘无法响应指令。 检查launch文件是否包含了必要的控制器声明: ```xml <node pkg="controller_manager" type="spawner" respawn="false" output="screen" args="joint_state_controller base_velocity_controller"/> ``` 同时确认yaml配置文件里有关节速度/位置模式的支持情况: ```yaml joint_state_controller: type: joint_state_controller/JointStateController publish_rate: 50 base_velocity_controller: type: diff_drive_controller/DiffDriveController left_wheel: ['wheel_left_joint'] right_wheel: ['wheel_right_joint'] wheel_separation: 0.48 cmd_vel_topic: /cmd_vel ``` #### 3. **世界文件(world file)冲突** 创建自定义world文件时需谨慎处理地形与机器人之间的交互关系。不当的世界设定也可能干扰到某些部件的动作自由度。比如摩擦系数过高会阻碍滑动;重力方向不对则会让整个结构漂浮起来等等[^2]。 下面是一个简单的husky_jaco.world模板片段展示如何指定地面属性: ```xml <?xml version="1.0"?> <sdf version="1.6"> <world name="default"> <include> <uri>model://ground_plane</uri> </include> <physics type='ode'> <gravity>0 0 -9.8</gravity> <max_step_size>0.001</max_step_size> <real_time_factor>1</real_time_factor> </physics> ... </world> </sdf> ``` #### 总结 综上所述,针对"Gazebo中机械可动但底盘不可动"这一现象可以从三个方面入手排查并修复问题:一是核实所有链接(link)下是否有合理的惯性数据填充;二是审查控制系统方面是否存在缺失项;三是重新审视所使用的场景描述文档(world file),确保它不会带来负面影响。 ```bash roslaunch ur5_gripper_moveit_config demo_gazebo.launch ``` 上述命令用于开启包含UR5机械手在内的模拟环境测试效果[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没入&浅出

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值