moveit+gazebo联合仿真问题总结

相应的配置文件和启动文件修改:
在进行配置的时候,考虑到以后可能有多个机械臂进行联合仿真,或者就是为了话题之间不会进行冲突,会利用命名空间进行区分,一般而言都是用 urdf 或者 xacro 文件中的模型名字 robot(这个可以根据自己的机械臂名字进行相应的修改,这里为了描述方便) 作为 命名空间的名字,
1、对自己的模型 robot 利用rosrun moveit_setup_assistatnt moveit_setup_assistatnt 生成 robot_moveit_config 文件。

2、在 robot_moveit_config 中的config 文件夹添加两个文件:controllers_gazebo.yaml 和 joint_names.yaml。
在launch 文件夹中添加文件:moveit_planning_execution.launch ;
并且修改文件robot_moveit_controller_manager.launch.xml。

3、添加 robotgazebo 文件夹,在该文件夹中新建 config 和 launch 两个文件夹。
config 文件夹中 添加文件:**robot
**gazebo_joint_states.yaml 和 robot_trajectory_control.yaml

launch 文件夹中添加文件:
robot_bringup_moveit.launch、
robot_gazebo_states.launch、
robot_gazebo_world.launch、
robot_trajectory_controller.launch

相关问题总结:

一、Action client not connected: PositionJointInterface_trajectory_controller/follow_joint_trajectory
或者Action client not connected: ×××/arm_joint_controller/follow_joint_trajectory
1、可能是一些安装包没有安装:
这里贴上两种解决方法:第一种第二种

这两种方法总结为下面两条语句:
sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control
sudo apt-get install ros-kinetic-ros-control ros-kinetic-ros-controllers

我在这里补充一些:
sudo apt-get install ros-kinetic-joint-trajectory-controller
下面的这三个命令就是相当于把相关的插件全部安装上。
sudo apt-get install ros-kinetic-control*
sudo apt-get install ros-kinetic-gazebo-ros*
sudo apt-get install ros-kinetic-joint-trajectory*

2、可能是你的关节名字没有写对
比如你直接复制别人的包,然后别人的关节名字是 joint_1,而你的是 joint1
虽然你其他地方都弄好了,但是还是会报错。

3、其他的一些问题:配置文件和启动文件没有配置好,命名工作区间冲突了等等。

二、可能会在运行过程中碰到这个问题: Unable to identify any set of controllers that can actuate the specified joints: [ joint1 joint2 joint3…]。
当时我上网查了一下,有人是这样解决的。我看了一下发现我的并不是这个问题,后来发现是我的 配置moveit生成的 launch中的文件中的 ×××××_moveit_controller_manager.launch.xml 文件中没有添加相应的文件导致的。

三、运行 moveit 的时候,机械臂末端没有出现可以拖动交互的小球和三个箭头
1、在左侧栏目中的 MotionPlanning 中 Planning Request 的 Query Goal State 打勾就可以;
2、在左侧栏目中的 MotionPlanning 中 Planning Request 的 Planning Group 选择相应的规划组;
3、最后一种可能就是机械臂末端的最后一个连杆设置的尺寸大小了,导致那个拖动交互球太小看不见了。(说出来都是泪呀)
经过测试之后,发现尺寸设置在0.005还能看见,但是就是比较小,正常0.02左右差不多就可以了。

### MoveItGazebo联合仿真实现教程 #### 配置概述 为了实现MoveItGazebo联合仿真,通常需要完成以下几个方面的配置:加载机器人的URDF/SRDF模型ROS参数服务器、设置控制器插件以及启动相应的节点来同步MoveIt规划场景Gazebo物理引擎的状态。这些操作可以通过编写自定义的launch文件并结合已有的功能包来完成。 #### 功能包准备 在使用MoveIt Setup Assistant工具完成机械臂的初始配置之后,会生成一个特定名称的功能包[^3]。此功能包包含了用于描述机器人几何结构、关节限制以及其他必要信息的所有文件。例如,在某个案例中创建了一个名为`left_arm_moveit_config`的工作空间目录下的功能包。 #### Launch 文件示例 下面提供了一段典型的 launch 文件代码片段,它展示了如何通过组合多个子组件来构建完整的模拟环境: ```xml <launch> <!-- 加载 URDF 到参数服务器 --> <param name="robot_description" command="$(find xacro)/xacro.py $(arg model)" /> <!-- 启动 Gazebo 并传入世界文件 --> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="world_name" value="$(find my_robot_gazebo)/worlds/my_world.world"/> <arg name="paused" default="false"/> <arg name="use_sim_time" default="true"/> </include> <!-- 插入机器人实体 --> <node pkg="gazebo_ros" type="spawn_model" args="-urdf -model robot -param robot_description"/> <!-- 发布钟信号给其他依赖间戳运行的服务 --> <node pkg="ros_control_boilerplate" type="joint_state_controller" output="screen"/> <!-- 运行 move_group 节点 --> <include file="$(find left_arm_moveit_config)/launch/move_group.launch"> <arg name="allow_trajectory_execution" value="true"/> <arg name="fake_execution" value="true"/> <!-- 设置为 true 表示仅执行而实际移动硬件 --> </include> </launch> ``` 上述XML脚本实现了几个重要目标: - 将代表整个系统的URDF字符串上传至全局命名空间内的键路径'/robot_description'之下; - 使用标准方法调用空旷世界的实例化服务,并允许调整暂停状态或者启用仿真模式的间轴管理选项; - 把预先设定好的虚拟对象放置于指定坐标系原点附近的位置处; - 定义了一些基本类型的控制回路单元以便后续环节能够正常运转起来; - 最终激活了负责处理高层次任务请求的核心模块——即'move_group'. #### 控制器配置 对于具体的运动学求解部分,则需参照官方文档说明进一步完善对应的yaml格式配置表单内容。比如针对某些特殊需求可能涉及到PID增益调节等方面的知识点[^2]. #### 注意事项 尽管存在所谓的“无脑配置”,但深入了解背后机制有助于解决潜在问题及优化性能表现。此外还需注意同版本间可能存在兼容性差异等问题
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

独坐寒江边

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

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

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

打赏作者

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

抵扣说明:

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

余额充值