xwenkkk 2025-04-14 18:22 采纳率: 0%
浏览 29

关于easy_handeye外参标定的问题

在运行easy_handeye进行外参标定时出现下述问题:一直出现连接不上move_group的情况,不能与get_planning_scene进行连接。
配置:Ubuntu20.04,usb摄像头,并且创建了arm的命名空间
RuntimeError: Unable to connect to move_group action server 'move_group' within allotted time (5s)
[ INFO] [1744621976.150162129]: Starting planning scene monitor
[ INFO] [1744621976.151610773]: Listening to '/move_group/monitored_planning_scene'
[ INFO] [1744621976.513901814]: waitForService: Service [/arm/get_planning_scene] has not been advertised, waiting...
[easy_handeye_calibration_server_robot-9] process has died [pid 25357, exit code 1, cmd /home/rosnoetic/robot_arm/devel/lib/easy_handeye/robot.py __name:=easy_handeye_calibration_server_robot __log:=/home/rosnoetic/.ros/log/b75bb3b0-190a-11f0-afcb-2b2a40e7ea65/easy_handeye_calibration_server_robot-9.log].
log file: /home/rosnoetic/.ros/log/b75bb3b0-190a-11f0-afcb-2b2a40e7ea65/easy_handeye_calibration_server_robot-9*.log
[ WARN] [1744621980.039001703]: Waiting for /arm/gripper_controller/follow_joint_trajectory to come up...
[ INFO] [1744621981.078473285]: Failed to call service get_planning_scene, have you launched move_group or called psm.providePlanningSceneService()?
[ INFO] [1744621981.079951450]: Constructing new MoveGroup connection for group 'arm' in namespace ''
[ INFO] [1744621981.514299143]: Failed to call service get_planning_scene, have you launched move_group or called psm.providePlanningSceneService()?
[ INFO] [1744621981.514404844]: Constructing new MoveGroup connection for group 'arm' in namespace ''




节点名称如下:
/arm/arm_controller_spawner
/arm/move_group
/arm/robot_state_publisher
/arm/rviz_robotics_24347_4821317757087325167
/arm/trajectory_follower
/arm_eye_on_hand/calibration_mover
/arm_eye_on_hand/easy_handeye_calibration_server
/arm_eye_on_hand/namespace_robotics_16889_5936331863435735396_rqt
/arm_eye_on_hand/namespace_robotics_17888_182318362578252338_rqt
/arm_eye_on_hand/namespace_robotics_19004_7723856264571273737_rqt
/arm_eye_on_hand/namespace_robotics_21258_7753139789221984879_rqt
/arm_eye_on_hand/namespace_robotics_22393_2614925901645531653_rqt
/arm_eye_on_hand/namespace_robotics_23579_1509722866506207725_rqt
/arm_eye_on_hand/namespace_robotics_24347_2037943114392681466_rqt
/aruco_tracker
/dummy_handeye
/rosout
/rviz_robotics_24347_3722348409959181216
<launch>
    <arg name="namespace_prefix" default="arm" />
    <arg name="marker_size" doc="Size of the ArUco marker used, in meters" default="0.05"/>
    <arg name="marker_id" doc="The ID of the ArUco marker used" default="12"/>
    <arg name="eye" default="left"/> 

    <!-- start the USB -->
    <include file="$(find camera_vision)/launch/usb_cam_with_calibration.launch" />
   <!--找到你相机的启动文件-->

    <!-- start ArUco -->
    <node name="aruco_tracker" pkg="aruco_ros" type="single">
        <remap from="/camera_info" to="/usb_cam/camera_info" />
        <remap from="/image" to="/usb_cam/image_raw" />
        <param name="image_is_rectified" value="true"/>
        <param name="marker_size"        value="0.05"/>      <!--这个地方是你标定板的尺寸-->
        <param name="marker_id"          value="12"/>        <!--这个地方是你标定板的id-->
        <param name="reference_frame"    value="usb_cam"/>
        <param name="camera_frame"       value="usb_cam"/>
        <param name="marker_frame"       value="camera_marker" />
    </node>

    <!-- start the robot -->
    <include file="$(find robot_description)/launch/arm_bringup_moveit.launch" />
    
    <!--找到你启动机械臂的文件--> 
     
    <!-- <include file="$(find arm_moveit_config)/launch/moveit_planning_execution.launch" /> -->
    <!--找到你启moveit的文件-->  
    <!-- </include> -->
    
    <!-- start easy_handeye -->
        <include file="$(find easy_handeye)/launch/calibrate.launch" >
            <arg name="namespace_prefix" value="$(arg namespace_prefix)" />
            <arg name="eye_on_hand" value="true" />
        <!--眼在手上,此处true--> 
            <arg name="tracking_base_frame" value="usb_cam" />
            <arg name="tracking_marker_frame" value="camera_marker" />
            <arg name="robot_base_frame" value="base_link" />
            <arg name="robot_effector_frame" value="tool_center_frame" />
            <arg name="freehand_robot_movement" value="false" />
            <arg name="robot_velocity_scaling" value="0.5" />
            <arg name="robot_acceleration_scaling" value="0.5" />
            <arg name="move_group_namespace" value="/arm" />
            <arg name="move_group" value="arm" />
        </include>
    
</launch>
  • 写回答

3条回答 默认 最新

  • 紫雾凌寒 新星创作者: 人工智能技术领域 2025-04-14 18:26
    关注

    让 “紫雾凌寒” 来帮你回答,本回答结合 DeepSeek

    如果还有问题,请评论或点击头像私信,如果有帮助到您, 请关注、采纳、点赞

    1. 关键点分析:
      - 主要问题是在运行easy_handeye进行外参标定时,无法连接move_group以及get_planning_scene。
      - 涉及到Ubuntu20.04系统和usb摄像头,可能是系统配置、驱动、软件包版本或相关权限设置等方面出现问题导致连接异常。
    2. 解决方案:
      - 检查ROS环境配置
      • 确保ROS安装正确且环境变量配置无误。可以通过在终端输入echo $ROS_PACKAGE_PATH来检查ROS包路径是否正确设置。如果不正确,需要重新配置ROS环境变量。例如,在.bashrc文件中添加正确的ROS路径:
        bash export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/path/to/your/ros/workspace source ~/.bashrc
      • 检查move_group和相关节点状态
      • 确认move_group节点是否正常启动。可以使用rosnode list命令查看当前运行的节点列表,检查是否有/move_group节点。如果没有,需要检查move_group相关的ROS包是否正确安装且启动命令是否正确。
      • 对于get_planning_scene,同样要确保其对应的节点正常运行。如果节点没有启动,可以尝试重新启动ROS相关服务,例如:
        bash sudo systemctl restart ros-master
      • 检查USB摄像头驱动
      • 确保USB摄像头驱动已正确安装。对于Ubuntu20.04,可以使用lsusb命令查看摄像头是否被正确识别。如果未识别,需要安装相应的摄像头驱动。例如,如果是普通的USB摄像头,可以尝试安装uvcvideo驱动。
      • 安装完成后,检查摄像头设备文件是否存在。一般在/dev目录下,如/dev/video0等。如果设备文件不存在或权限不正确,可以使用以下命令更改权限:
        bash sudo chmod 666 /dev/video0
      • 检查easy_handeye配置
      • 检查easy_handeye的配置文件,确保其中关于move_group和相关ROS接口的配置参数正确。例如,检查配置文件中是否正确指定了move_group的命名空间、话题等信息。
      • 确保easy_handeye软件包版本与ROS版本兼容。如果版本不兼容,可能会出现连接问题。可以尝试更新或降级easy_handeye软件包到合适的版本。
    3. 不同方案优缺点:
      - 检查ROS环境配置
      • 优点:ROS环境配置是基础,如果配置错误,很多ROS相关操作都无法正常进行,所以这是首先要排查的重要步骤。解决ROS环境问题后,可能解决一系列由环境导致的连接异常问题。
      • 缺点:如果ROS环境本身没有问题,进行此步骤可能浪费一些时间在不必要的检查上。
      • 检查move_group和相关节点状态
      • 优点:直接针对连接不上的节点进行排查,能快速定位到是节点本身未启动还是其他相关服务的问题。
      • 缺点:如果节点未启动是由于其他深层次原因,如依赖问题等,单纯检查节点状态可能无法完全解决问题。
      • 检查USB摄像头驱动
      • 优点:摄像头是硬件设备,如果驱动未正确安装,可能导致与摄像头相关的ROS节点无法正常获取数据,从而影响整个流程,所以检查驱动很有必要。
      • 缺点:不同摄像头可能需要不同的驱动安装方法,如果对摄像头驱动不熟悉,可能需要花费较多时间去查找和安装正确的驱动。
      • 检查easy_handeye配置
      • 优点:直接针对easy_handeye软件本身的配置进行检查,能快速发现是否是配置参数错误导致连接问题。
      • 缺点:如果配置文件没有明显错误,可能需要进一步检查软件包版本等其他方面,容易遗漏一些问题。
    4. 总结:
      - 出现连接不上move_group和get_planning_scene的问题,需要从多个方面进行排查。首先确保ROS环境正确配置,然后检查相关节点状态,接着查看USB摄像头驱动情况,最后仔细检查easy_handeye的配置。通过逐步排查这些方面,找出问题所在并解决连接异常问题,以顺利完成easy_handeye外参标定。

    希望以上解答对您有所帮助。如果您有任何疑问,欢迎在评论区提出。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月14日