小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
关于机械臂rviz和gazebo一起动的问题
-
主要是实现控制两个机械臂下rviz和gazebo联动
启动elfin_moveit_planning_execution后报错
elfin_moveit_planning_execution内容如下
ros_controllers.yaml文件如下
elfin_empty_world.launch是导入模型和控制器的launch文件如下
我打印了当前可用的控制器信息
显示控制器在运行(夹爪控制器暂时没管)、
搜了很多类似的问题大都说控制器没下载 但都没解决问题 -
在解决您遇到的关于
elfin_moveit_planning_execution
、rviz
和gazebo
联动的问题时,我们需要关注几个关键点:-
ROS控制器配置:确保
ros_controllers.yaml
文件正确配置了所有必要的控制器,并且这些控制器在gazebo
中都有对应的实现。 -
URDF/SDF模型:确保在
gazebo
中使用的机器人模型(通过.urdf
或.sdf
文件定义)与MoveIt!
中使用的模型相匹配,特别是关节和链接的名称和类型。 -
启动文件:
elfin_empty_world.launch
文件应该正确启动gazebo
世界、机器人模型、所有必要的控制器和MoveIt!
相关的节点。 -
MoveIt!配置:确保
MoveIt!
配置文件(如.srdf
文件)正确地描述了机器人的关节和链接之间的父子关系、运动学求解器和规划组等。 -
命名空间:如果您的场景中有两个机械臂,确保在
gazebo
、ros_controllers.yaml
和MoveIt!
配置中为每个机械臂使用了不同的命名空间或前缀,以避免名称冲突。 -
错误日志:仔细阅读启动
elfin_moveit_planning_execution
后产生的错误日志。通常,日志会给出关于为什么控制器无法加载或为什么MoveIt!
无法与gazebo
正确通信的线索。 -
权限和依赖:确保所有必要的ROS包都已正确安装,并且用户具有运行这些包的权限。
-
同步:
gazebo
和rviz
之间的联动通常依赖于tf
(转换)信息。确保gazebo
正在发布tf
信息,并且rviz
正在接收这些信息。
以下是一些建议的步骤来解决您的问题:
a. 检查控制器状态:使用
rosrun controller_manager list_controllers
命令来查看当前可用的控制器列表,并确保它们都已启动并处于活动状态。b. 检查MoveIt!配置:确保
MoveIt!
配置文件中定义的规划组与ros_controllers.yaml
文件中定义的控制器相匹配。c. 检查
gazebo
模型:确保gazebo
中加载的机器人模型与MoveIt!
配置中使用的模型一致。d. 检查
tf
:使用rosrun tf view_frames
和rviz
中的TF
插件来检查tf
树是否正确构建。e. 查看错误日志:详细检查启动
elfin_moveit_planning_execution
时产生的任何错误或警告消息,并尝试根据这些消息进行调试。f. 重新构建和启动:如果进行了任何更改,请确保重新构建您的ROS工作空间,并清除任何旧的
gazebo
缓存或日志文件,然后重新启动整个系统。最后,如果您已经尝试了上述所有建议但仍然无法解决问题,请考虑在ROS社区(如ROS Answers或相关论坛)中寻求帮助,并附上详细的错误日志和配置信息。
以上为生成回答,仅供参考~
-
-
@2636814605 所以问题是什么
-
@小鱼 大佬 问题是启动elfin_moveit_planning_execution报错[ERROR] [1721808134.625265036, 128.872000000]: Apparently trajectory initialization failed
-
@小鱼 大佬 配置rviz和gazebo联动时 rviz需要添加机械臂在rviz运动的move_group/fake_controller_joint_states这个控制器吗 我在moveit_rviz.launch 中添加了该控制器 执行elfin_moveit_planning_execution时报错消失 但是gazebo中的机械模型不会动
moveit_rviz.launch代码如下
<launch>
<arg name="debug" default="false" />
<arg unless="$(arg debug)" name="launch_prefix" value="" />
<arg if="$(arg debug)" name="launch_prefix" value="gdb --ex run --args" />
<arg name="use_gui" default="false" /><arg name="rviz_config" default="$(find elfin_doube_moveit_config)/launch/moveit.rviz" />
<arg name="command_args" value="-d $(arg rviz_config)" />
<arg name="config" default="$(find elfin_doube_moveit_config)" />
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" unless="$(arg use_gui)">
<rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
</node><node name="$(anon rviz)" launch-prefix="$(arg launch_prefix)" pkg="rviz" type="rviz" respawn="false"
args="$(arg command_args)" output="screen"><rosparam command="load" file="$(arg config)/config/kinematics.yaml"/>
</node>
</launch>
-
应该是不用添加的,最终目的还是让gazebo动起来
-
@小鱼 我重新创建了一个elfin_arm_control.yaml文件
left_arm_controller:
type: position_controllers/JointTrajectoryController
joints:
- left_elfin_joint1
- left_elfin_joint2
- left_elfin_joint3
- left_elfin_joint4
- left_elfin_joint5
- left_elfin_joint6
constraints:
goal_time: 0.6
stopped_velocity_tolerance: 0.1stop_trajectory_duration: 0.05
state_publish_rate: 25
action_monitor_rate: 10
right_arm_controller:
type: position_controllers/JointTrajectoryController
joints:
- right_elfin_joint1
- right_elfin_joint2
- right_elfin_joint3
- right_elfin_joint4
- right_elfin_joint5
- right_elfin_joint6
constraints:
goal_time: 0.6
stopped_velocity_tolerance: 0.1stop_trajectory_duration: 0.05
state_publish_rate: 25
action_monitor_rate: 10
left_gripper_controller:
type: position_controllers/JointTrajectoryController
joints:
- left_gripper_finger1_joint
- left_gripper_finger2_joint
constraints:
goal_time: 0.6
stopped_velocity_tolerance: 0.1stop_trajectory_duration: 0.05
state_publish_rate: 25
action_monitor_rate: 10
right_gripper_controller:
type: position_controllers/JointTrajectoryController
joints:
- right_gripper_finger1_joint
- right_gripper_finger2_joint
constraints:
goal_time: 0.6
stopped_velocity_tolerance: 0.1stop_trajectory_duration: 0.05
state_publish_rate: 25
action_monitor_rate: 10加载这个控制器参数文件报错消失了
rviz拖动规划终端显示规划完成
[ INFO] [1721870514.435820932, 866.089000000]: left_arm[RRTConnect]: Created 4 states (2 start + 2 goal)
[ INFO] [1721870514.436950495, 866.090000000]: left_arm[RRTConnect]: Created 4 states (2 start + 2 goal)
[ INFO] [1721870514.437251247, 866.091000000]: ParallelPlan::solve(): Solution found by one or more threads in 0.003067 seconds
[ INFO] [1721870514.450104065, 866.102000000]: SimpleSetup: Path simplification took 0.012627 seconds and changed from 3 to 2 states
[ INFO] [1721870514.453767647, 866.105000000]: Fake execution of trajectory
[ INFO] [1721870516.856747137, 868.359000000]: Completed trajectory execution with status SUCCEEDED ...
但是rviz中只是模拟规划 gazebo依旧不动
不知道问题出在哪里了 -
@小鱼
rqt如上