【ROS_Driver驱动真实UR机械臂】

news2025/2/13 12:53:02

【ROS_Driver驱动真实UR机械臂】

  • 1. 前言
  • 2. 安装fmauch_universal_robot和驱动
  • 3. 仿真
    • 3.1 启动gazebo
    • 3.2 启动move it规划
    • 3.3 启动rviz
  • 4. 运行机械臂
    • 4.1 启动rviz
    • 4.2 启动示教器程序
    • 4.3 启动moveit
    • 4.4 启动rviz
  • 5. 一些说明补充
    • 5.1 ur_calibration 提取标定信息
    • 5.2 自带程序
    • 5.3 信息图
    • 5.4 修改bring up文件
  • 6. 参考

1. 前言

使用的版本是 Ubuntu18.04 + ROS melodic + UR3(CB3.12)
因为后续需要使用手控器,手控器的驱动需要在Ubuntu18.04下才可以使用。

这两篇文章是UR控制器升级和关于示教器的配置可以参考:
【UR3系统升级到CB3.12附带URcap1.05】
【UR机械臂ros通讯前的示教器网络配置】

在这里插入图片描述

这里需要 特别说明 的是:

  1. ur_driverur_modern_drive都已经停止更新,对于使用新版本 CB3 和 e-Series 控制器的机械臂都应当使用ur_robot_driver作为驱动.
  2. 更重要的是,ur_robot_driverur_modern_drive不一样,不要下载universal_robot,而应该下载fmauch_universal_robot
  3. 另外需要注意的是fmauch_universal_robot需要下载的是calibration_devel分支

2. 安装fmauch_universal_robot和驱动

这一步source /opt/ros/melodic/setup.bash需要执行,或者写在bashrc
不然最后catkin_make执行的时候会报错提示不知道ros版本

mkdir -p ur_ws/src && cd ur_ws

# 下载fmauch_universal_robot(注意分支)
git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot

# 下载Universal_Robots_ROS_Driver驱动
git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver

# 更新 -qq代表除非报错,否则不输出
sudo apt update -qq

sudo apt-get upgrade

# 更新依赖(这一步需要有梯子,不然可能会超时,超时执行下一步即可,只要一开始安装ros时执行成功过即可)
rosdep update

# 安装依赖 -y表示出现 y/N选项 直接执行y
rosdep install --from-paths src --ignore-src -y

# 编译
catkin_make

# 激活当前工作空间,并写入
echo "source ~/ur_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

注意:

一定要安装fmauch_universal_robot而不是universal_robot,因为fmauch_universal_robot才和ur_ROS_Driver是匹配的,不然之后驱动真实机械臂时,会说ur_description文件夹里没有相应文件,也不可以fmauch_universal_robotuniversal_robot两个都安装,因为这两个有很多文件夹名字是相同的,catkin_make时会报错。(最好不要都安装,但如果两个都安装了,catkin_make报错,可以把提示重复的文件夹删除 ) ,一定要source /opt/ros/melodic/setup.bash,否则rosdep install --from-paths src --ignore-src -y时会报错,提示不知道ros版本。

3. 仿真

3.1 启动gazebo

注意是ur3_bringup.launch,而不是ur3.launch

roslaunch ur_gazebo ur3_bringup.launch

在这里插入图片描述

3.2 启动move it规划

roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch sim:=true

在这里插入图片描述

3.3 启动rviz

注意后面要给出rviz_config的地址

roslaunch ur3_moveit_config moveit_rviz.launch rviz_config:=$(rospack find ur3_moveit_config)/launch/moveit.rviz

在这里插入图片描述

注意:

  1. 这一部分需要特别注意的是,因为fmauch_universal_robot里面文件名字和universal_robot有所差别, 运行gazebo启动的是ur3_bringup.launch而不是ur3.launch.
  2. 这一部分另一个需要特别注意的是,执行最后一步,启动rviz时,不能直接ros launch ur3_moveit_config moveit_rviz.launch,而需要给出rviz的地址rviz_config:=$(rospack find ur3_moveit_config)/launch/moveit.rviz,不然rviz的界面显示不出ur机械臂的模型图
  3. 和之前universal_robot的仿真过程不一样,就是在rviz界面左下角的MotionPlanningPlanning里将Planning Group选为manipulator这样就出现末端执行器,可以移动,然后就可以规划了(原选项是end effector,而且没有末端执行器可以移动)

在这里插入图片描述

  1. 在rviz界面左上角的DispalyPlaned Path里将Loop Animation取消勾选
  2. 这样规划过程就不会一直循环啦,至此就和之前用universal_robot的仿真过程完全一样啦

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述大家可以根据情况选择对应路径规划算法
在这里插入图片描述

需要注意的是gazebo和moveit里关于/scaled_pos_joint_traj_controller/follow_joint_trajectory控制器的名字不统一。
所以要在/home/guyue/ur_ws/src/fmauch_universal_robot/ur3_moveit_config/launch下的ur3_moveit_planning_execution.launchl文件里进行修改。
很多人的教程里都提出要修改这部分东西,但是因为驱动和fmauch一直在更新,所以和之前修改的方式有所不同。未来的修改方式可能又有所改变。
具体可以参考UR机械臂学习(5-3):驱动ur机械臂实物——问题及解决 的问题5 。
看一下分析过程,也就明白为什么要这样修改了。

# ur3_moveit_planning_execution.launchl 第6行修改为
<remap if="$(arg sim)" from="/scaled_pos_joint_traj_controller/follow_joint_trajectory" to="/pos_joint_traj_controller/follow_joint_trajectory"/>

新版本不需要更改
在这里插入图片描述

4. 运行机械臂

4.1 启动rviz

启动bring up,建立与机械臂的连接

roslaunch ur_robot_driver ur3_bringup.launch limited:=true robot_ip:=192.168.56.10

打印log

 * /ur_hardware_interface/script_sender_port: 50002
 * /ur_hardware_interface/servoj_gain: 2000
 * /ur_hardware_interface/servoj_lookahead_time: 0.03
 * /ur_hardware_interface/tf_prefix: 
 * /ur_hardware_interface/tool_baud_rate: 115200
 * /ur_hardware_interface/tool_parity: 0
 * /ur_hardware_interface/tool_rx_idle_chars: 1.5
 * /ur_hardware_interface/tool_stop_bits: 1
 * /ur_hardware_interface/tool_tx_idle_chars: 3.5
 * /ur_hardware_interface/tool_voltage: 0
 * /ur_hardware_interface/trajectory_port: 50003
 * /ur_hardware_interface/use_tool_communication: False
 * /vel_joint_traj_controller/action_monitor_rate: 20
 * /vel_joint_traj_controller/constraints/elbow_joint/goal: 0.1
 * /vel_joint_traj_controller/constraints/elbow_joint/trajectory: 0.1
 * /vel_joint_traj_controller/constraints/goal_time: 0.6
 * /vel_joint_traj_controller/constraints/shoulder_lift_joint/goal: 0.1
 * /vel_joint_traj_controller/constraints/shoulder_lift_joint/trajectory: 0.1
 * /vel_joint_traj_controller/constraints/shoulder_pan_joint/goal: 0.1
 * /vel_joint_traj_controller/constraints/shoulder_pan_joint/trajectory: 0.1
 * /vel_joint_traj_controller/constraints/stopped_velocity_tolerance: 0.05
 * /vel_joint_traj_controller/constraints/wrist_1_joint/goal: 0.1
 * /vel_joint_traj_controller/constraints/wrist_1_joint/trajectory: 0.1
 * /vel_joint_traj_controller/constraints/wrist_2_joint/goal: 0.1
 * /vel_joint_traj_controller/constraints/wrist_2_joint/trajectory: 0.1
 * /vel_joint_traj_controller/constraints/wrist_3_joint/goal: 0.1
 * /vel_joint_traj_controller/constraints/wrist_3_joint/trajectory: 0.1
 * /vel_joint_traj_controller/gains/elbow_joint/d: 0.1
 * /vel_joint_traj_controller/gains/elbow_joint/i: 0.05
 * /vel_joint_traj_controller/gains/elbow_joint/i_clamp: 1
 * /vel_joint_traj_controller/gains/elbow_joint/p: 5.0
 * /vel_joint_traj_controller/gains/shoulder_lift_joint/d: 0.1
 * /vel_joint_traj_controller/gains/shoulder_lift_joint/i: 0.05
 * /vel_joint_traj_controller/gains/shoulder_lift_joint/i_clamp: 1
 * /vel_joint_traj_controller/gains/shoulder_lift_joint/p: 5.0
 * /vel_joint_traj_controller/gains/shoulder_pan_joint/d: 0.1
 * /vel_joint_traj_controller/gains/shoulder_pan_joint/i: 0.05
 * /vel_joint_traj_controller/gains/shoulder_pan_joint/i_clamp: 1
 * /vel_joint_traj_controller/gains/shoulder_pan_joint/p: 5.0
 * /vel_joint_traj_controller/gains/wrist_1_joint/d: 0.1
 * /vel_joint_traj_controller/gains/wrist_1_joint/i: 0.05
 * /vel_joint_traj_controller/gains/wrist_1_joint/i_clamp: 1
 * /vel_joint_traj_controller/gains/wrist_1_joint/p: 5.0
 * /vel_joint_traj_controller/gains/wrist_2_joint/d: 0.1
 * /vel_joint_traj_controller/gains/wrist_2_joint/i: 0.05
 * /vel_joint_traj_controller/gains/wrist_2_joint/i_clamp: 1
 * /vel_joint_traj_controller/gains/wrist_2_joint/p: 5.0
 * /vel_joint_traj_controller/gains/wrist_3_joint/d: 0.1
 * /vel_joint_traj_controller/gains/wrist_3_joint/i: 0.05
 * /vel_joint_traj_controller/gains/wrist_3_joint/i_clamp: 1
 * /vel_joint_traj_controller/gains/wrist_3_joint/p: 5.0
 * /vel_joint_traj_controller/joints: ['shoulder_pan_jo...
 * /vel_joint_traj_controller/state_publish_rate: 125
 * /vel_joint_traj_controller/stop_trajectory_duration: 0.5
 * /vel_joint_traj_controller/type: velocity_controll...
 * /vel_joint_traj_controller/velocity_ff/elbow_joint: 1.0
 * /vel_joint_traj_controller/velocity_ff/shoulder_lift_joint: 1.0
 * /vel_joint_traj_controller/velocity_ff/shoulder_pan_joint: 1.0
 * /vel_joint_traj_controller/velocity_ff/wrist_1_joint: 1.0
 * /vel_joint_traj_controller/velocity_ff/wrist_2_joint: 1.0
 * /vel_joint_traj_controller/velocity_ff/wrist_3_joint: 1.0

NODES
  /
    controller_stopper (ur_robot_driver/controller_stopper_node)
    robot_state_publisher (robot_state_publisher/robot_state_publisher)
    ros_control_controller_spawner (controller_manager/spawner)
    ros_control_stopped_spawner (controller_manager/spawner)
    ur_hardware_interface (ur_robot_driver/ur_robot_driver_node)
  /ur_hardware_interface/
    ur_robot_state_helper (ur_robot_driver/robot_state_helper)

auto-starting new master
process[master]: started with pid [23140]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to d54ee7a2-0921-11ee-999f-00e26967d098
process[rosout-1]: started with pid [23155]
started core service [/rosout]
process[robot_state_publisher-2]: started with pid [23162]
process[ur_hardware_interface-3]: started with pid [23163]
process[ros_control_controller_spawner-4]: started with pid [23164]
process[ros_control_stopped_spawner-5]: started with pid [23166]
process[controller_stopper-6]: started with pid [23171]
process[ur_hardware_interface/ur_robot_state_helper-7]: started with pid [23173]
[ INFO] [1686575141.963687453]: Waiting for controller manager service to come up on /controller_manager/switch_controller
[ INFO] [1686575141.964909914]: Initializing dashboard client
[ INFO] [1686575141.965640306]: waitForService: Service [/controller_manager/switch_controller] has not been advertised, waiting...
[ INFO] [1686575141.968392130]: Connected: Universal Robots Dashboard Server

[ INFO] [1686575141.970948972]: waitForService: Service [/ur_hardware_interface/dashboard/play] has not been advertised, waiting...
[ INFO] [1686575141.975152812]: Initializing urdriver
[ WARN] [1686575141.975539677]: No realtime capabilities found. Consider using a realtime system for better performance
[ INFO] [1686575141.976863159]: Negotiated RTDE protocol version to 2.
[ INFO] [1686575141.977001958]: Setting up RTDE communication with frequency 125.000000
[ INFO] [1686575141.992916596]: waitForService: Service [/ur_hardware_interface/dashboard/play] is now available.
[INFO] [1686575142.181043]: Controller Spawner: Waiting for service controller_manager/load_controller
[INFO] [1686575142.183463]: Controller Spawner: Waiting for service controller_manager/load_controller
[ INFO] [1686575142.989578343]: Checking if calibration data matches connected robot.
[ WARN] [1686575142.990031441]: No realtime capabilities found. Consider using a realtime system for better performance
[ERROR] [1686575144.065570636]: The calibration parameters of the connected robot don't match the ones from the given kinematics config file. Please be aware that this can lead to critical inaccuracies of tcp positions. Use the ur_calibration tool to extract the correct calibration from the robot and pass that into the description. See [https://github.com/UniversalRobots/Universal_Robots_ROS_Driver#extract-calibration-information] for details.
[ WARN] [1686575144.067863282]: No realtime capabilities found. Consider using a realtime system for better performance
[ INFO] [1686575144.068035418]: Loaded ur_robot_driver hardware_interface
[ INFO] [1686575144.088699963]: waitForService: Service [/controller_manager/switch_controller] is now available.
[ INFO] [1686575144.088721284]: Service available.
[ INFO] [1686575144.088740168]: Waiting for controller list service to come up on /controller_manager/list_controllers
[ INFO] [1686575144.089132332]: Service available.
[INFO] [1686575144.292299]: Controller Spawner: Waiting for service controller_manager/switch_controller
[INFO] [1686575144.293467]: Controller Spawner: Waiting for service controller_manager/unload_controller
[INFO] [1686575144.294627]: Loading controller: joint_state_controller
[INFO] [1686575144.294642]: Controller Spawner: Waiting for service controller_manager/switch_controller
[INFO] [1686575144.296556]: Controller Spawner: Waiting for service controller_manager/unload_controller
[INFO] [1686575144.298310]: Loading controller: pos_joint_traj_controller
[INFO] [1686575144.303570]: Loading controller: scaled_pos_joint_traj_controller
[INFO] [1686575144.319611]: Loading controller: joint_group_vel_controller
[ INFO] [1686575144.329849431]: Robot mode is now RUNNING
[ INFO] [1686575144.329914040]: Robot's safety mode is now NORMAL
[INFO] [1686575144.335599]: Loading controller: speed_scaling_state_controller
[INFO] [1686575144.343429]: Controller Spawner: Loaded controllers: pos_joint_traj_controller, joint_group_vel_controller
[INFO] [1686575144.351608]: Loading controller: force_torque_sensor_controller
[INFO] [1686575144.359492]: Controller Spawner: Loaded controllers: joint_state_controller, scaled_pos_joint_traj_controller, speed_scaling_state_controller, force_torque_sensor_controller
[INFO] [1686575144.367550]: Started controllers: joint_state_controller, scaled_pos_joint_traj_controller, speed_scaling_state_controller, force_torque_sensor_controller

4.2 启动示教器程序

先打开控制器运行URcap

在这里插入图片描述具体可参照 【UR机械臂ros通讯前的示教器网络配置】

4.3 启动moveit

仿真后面需要后面加 sim:=true

roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch limited:=true

打印log

[ INFO] [1686575100.809832357]: Planning attempt 1 of at most 1
[ INFO] [1686575100.810012133]: Planner configuration 'manipulator' will use planner 'geometric::RRTConnect'. Additional configuration parameters will be set when the planner is constructed.
[ INFO] [1686575100.810221153]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575100.810249093]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575100.810278337]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575100.810300980]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575100.820706140]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575100.820758685]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1686575100.820934593]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575100.821123020]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1686575100.821173071]: ParallelPlan::solve(): Solution found by one or more threads in 0.011044 seconds
[ INFO] [1686575100.821314804]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575100.821329419]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575100.821344769]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575100.821366679]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575100.821675089]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575100.821700698]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575100.821869703]: RRTConnect: Created 5 states (3 start + 2 goal)
[ INFO] [1686575100.821937092]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575100.821991556]: ParallelPlan::solve(): Solution found by one or more threads in 0.000726 seconds
[ INFO] [1686575100.822068435]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575100.822086606]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575100.822471411]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1686575100.822597168]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1686575100.822631347]: ParallelPlan::solve(): Solution found by one or more threads in 0.000596 seconds
[ INFO] [1686575100.823754006]: SimpleSetup: Path simplification took 0.001104 seconds and changed from 3 to 2 states
[ WARN] [1686575100.826107546]: Controller scaled_pos_joint_traj_controller failed with error INVALID_GOAL: 
[ WARN] [1686575100.826143657]: Controller handle scaled_pos_joint_traj_controller reports status FAILED
[ INFO] [1686575100.826160581]: Completed trajectory execution with status FAILED ...
[ INFO] [1686575104.281938016]: Combined planning and execution request received for MoveGroup action. Forwarding to planning and execution pipeline.
[ INFO] [1686575104.281976233]: Planning attempt 1 of at most 1
[ INFO] [1686575104.282146821]: Planner configuration 'manipulator' will use planner 'geometric::RRTConnect'. Additional configuration parameters will be set when the planner is constructed.
[ INFO] [1686575104.282325677]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575104.282349215]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575104.282368859]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575104.282399151]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575104.292703669]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575104.292848065]: RRTConnect: Created 5 states (3 start + 2 goal)
[ INFO] [1686575104.292959658]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575104.292979950]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575104.293016497]: ParallelPlan::solve(): Solution found by one or more threads in 0.010759 seconds
[ INFO] [1686575104.293125674]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575104.293145814]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575104.293169536]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575104.293186016]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575104.293455439]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575104.293573635]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1686575104.293623722]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575104.293726676]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575104.293784085]: ParallelPlan::solve(): Solution found by one or more threads in 0.000686 seconds
[ INFO] [1686575104.293855259]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575104.293880786]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1686575104.294207754]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575104.294279980]: RRTConnect: Created 4 states (2 start + 2 goal)
[ INFO] [1686575104.294315328]: ParallelPlan::solve(): Solution found by one or more threads in 0.000490 seconds
[ INFO] [1686575104.295534955]: SimpleSetup: Path simplification took 0.001198 seconds and changed from 3 to 2 states

4.4 启动rviz

roslaunch ur3_moveit_config moveit_rviz.launch rviz_config:=$(rospack find ur3_moveit_config)/launch/moveit.rviz

打印log

conda deactivate
robot@ms:~$ roslaunch ur3_moveit_config moveit_rviz.launch rviz_config:=$(rospack find ur3_moveit_config)/launch/moveit.rviz
... logging to /home/robot/.ros/log/76a810e4-0920-11ee-999f-00e26967d098/roslaunch-ms-12313.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://ms:45377/

SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.13

NODES
  /
    rviz_ms_12313_7457887479089493497 (rviz/rviz)

ROS_MASTER_URI=http://localhost:11311

process[rviz_ms_12313_7457887479089493497-1]: started with pid [12336]
[ INFO] [1686574633.666341854]: rviz version 1.13.29
[ INFO] [1686574633.666362978]: compiled against Qt version 5.9.5
[ INFO] [1686574633.666369105]: compiled against OGRE version 1.9.0 (Ghadamon)
[ INFO] [1686574633.671160967]: Forcing OpenGl version 0.
[ INFO] [1686574634.058498715]: Stereo is NOT SUPPORTED
[ INFO] [1686574634.058540307]: OpenGL device: NVIDIA GeForce RTX 3060/PCIe/SSE2
[ INFO] [1686574634.058550396]: OpenGl version: 4.6 (GLSL 4.6).
[ INFO] [1686574637.293998461]: Loading robot model 'ur3_robot'...
[ WARN] [1686574637.323511460]: Kinematics solver doesn't support #attempts anymore, but only a timeout.
Please remove the parameter '/robot_description_kinematics/manipulator/kinematics_solver_attempts' from your configuration.
[ INFO] [1686574637.419084517]: Starting planning scene monitor
[ INFO] [1686574637.419783952]: Listening to '/move_group/monitored_planning_scene'
[ INFO] [1686574637.551684058]: Constructing new MoveGroup connection for group 'manipulator' in namespace ''
[ INFO] [1686574638.659683132]: Ready to take commands for planning group manipulator.
[ INFO] [1686574638.659718218]: Looking around: no
[ INFO] [1686574638.659730168]: Replanning: no
[ INFO] [1686574812.467003812]: Stopping planning scene monitor
[ WARN] [1686574812.562478960]: SEVERE WARNING!!! Attempting to unload library while objects created by this loader exist in the heap! You should delete your objects before attempting to unload the library or destroying the ClassLoader. The library will NOT be unloaded.
[ INFO] [1686574812.563497374]: Loading robot model 'ur3_robot'...
[ INFO] [1686574812.695066194]: Starting planning scene monitor
[ INFO] [1686574812.695917097]: Listening to '/move_group/monitored_planning_scene'
[ INFO] [1686574812.821024948]: Constructing new MoveGroup connection for group 'manipulator' in namespace ''
[ INFO] [1686574812.831100285]: Ready to take commands for planning group manipulator.
[ INFO] [1686574812.831114500]: Looking around: no
[ INFO] [1686574812.831120532]: Replanning: no
[ INFO] [1686575100.859334122]: ABORTED: Solution found but controller failed during execution
[ INFO] [1686575104.315191411]: ABORTED: Solution found but controller failed during execution
[ INFO] [1686575107.802862658]: Stopping planning scene monitor
[ WARN] [1686575107.885856144]: SEVERE WARNING!!! Attempting to unload library while objects created by this loader exist in the heap! You should delete your objects before attempting to unload the library or destroying the ClassLoader. The library will NOT be unloaded.
[ INFO] [1686575107.887121780]: Loading robot model 'ur3_robot'...
[ INFO] [1686575108.019623055]: Starting planning scene monitor
[ INFO] [1686575108.020300909]: Listening to '/move_group/monitored_planning_scene'
[ INFO] [1686575108.144568830]: Constructing new MoveGroup connection for group 'manipulator' in namespace ''
[ INFO] [1686575108.154249164]: Ready to take commands for planning group manipulator.
[ INFO] [1686575108.154262679]: Looking around: no
[ INFO] [1686575108.154268610]: Replanning: no
[ INFO] [1686575116.115054020]: ABORTED: Solution found but controller failed during execution
^C[rviz_ms_12313_7457887479089493497-1] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

这里需要 注意 的就是先启动bring up,再启动示教器。
启动示教器后如果正常通信,会出现:

   [ INFO] [1624885305.373017515]: Robot requested program
    [ INFO] [1624885305.373077772]: Sent program to robot
    [ INFO] [1624885305.839015623]: Robot connected to reverse interface. Ready to receive control commands.

3.2 启动rqt,单关节控制

# 01 启动bringup,建立与机械臂的连接
roslaunch ur_robot_driver ur3_bringup.launch limited:=true robot_ip:=192.168.56.10


# 02 启动示教器程序

# 03 启动rqt
rosrun rqt_joint_trajectory_controller rqt_joint_trajectory_controller
# 或者 运行 rqt
# 然后选择 Plugins -> Robot Tools -> Controller Manager

5. 一些说明补充

5.1 ur_calibration 提取标定信息

为了提高正向和逆向运动学精度,每个UR机器人在出厂前都进行了标定。

ur_calibrationUniversal_Robots_ROS_Driver
中的一个功能包,能够提取机器人出厂标定的运动学参数,并更改 ur_description 包的配置文件以获取正确的URDF模型。

尽管使用此驱动程序控制机器人不是必须执行此步骤,但强烈建议您这样做,因为否则末端执行器的位置可能会出现厘米级偏差。

启动ur机器人,确保网络正常链接。然后启动节点 calibration_correction 。该节点直接从机器人提取标定信息,将其保存到.yaml文件中:

roslaunch ur_calibration calibration_correction.launch \
  robot_ip:=192.168.56.10 target_filename:="${HOME}/ur_ws/src/fmauch_universal_robot/ur_description/config/ur3_calibration.yaml"

# 之后每次启动bring up都启动这句
roslaunch ur_robot_driver ur3_bringup.launch robot_ip:=192.168.56.10 \
 kinematics_config:="${HOME}/ur_ws/src/fmauch_universal_robot/ur_description/config/ur3_calibration.yaml"

5.2 自带程序

运行其自带测试程序test_move.py可以移动机械臂,出现如下错误
在这里插入图片描述

则需要python环境:【Ubuntu18配置Anaconda深度学习环境】

rosrun ur_robot_driver test_move.py

5.3 信息图

使用rqt_graph、rqt_plot功能显示信息图

rosrun rqt_graph rqt_graph

在这里插入图片描述

5.4 修改bring up文件

启动bring up

roslanuch ur_robot_driver ur3_bringup.launch limited:=true robot_ip:=192.168.56.10

避免每次启动都要填写ip地址,可以修改ur3_bringup.launch中的默认参数

<arg name="robot_ip" default="192.168.1.0">
  • 此外,可以修改本文件中的一些参数,以实现机器人的不同动作效果,如机器人动作速度。
  • 首先要将use_lowbandwidth_trajectory_follower设置为true
  • 再将time_interval设置为0.004或者更低即可
  • 设置的过低可能会导致控制的轨迹追踪产生问题

6. 参考

操作步骤如下

# 新建工作空间
mkdir -p ur_ws/src && cd ur_ws/src

# 下载fmauch_universal_robot(注意是calibration_devel分支)
git clone -b calibration_devel https://github.com/fmauch/universal_robot.git  fmauch_universal_robot

# 下载Universal_Robots_ROS_Driver驱动
git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git Universal_Robots_ROS_Driver

# 更新 -qq代表除非报错,否则不输出
sudo apt update -qq

sudo apt-get upgrade

# 更新依赖(这一步需要有梯子,不然可能会超时,超时执行下一步即可,只要一开始安装ros时执行成功过即可)
rosdep update

#返回ur_ws文件夹路径
cd ..
# 安装依赖 -y表示出现 y/N选项 直接执行y
rosdep install --from-paths src --ignore-src -y

# 编译
catkin_make

# 激活当前工作空间,并写入
echo "source ~/ur_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

合工大机器人实验室:https://blog.csdn.net/qq_34935373/article/details/109238762
Ubuntu与实体UR3_e机械臂通讯以及出现的问题:https://blog.csdn.net/qq_39448233/article/details/109038004
UR机械臂学习(5-2):使用Universal_Robots_ROS_Driver驱动真实机械臂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/639557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从原理到实践:使用Mediacodec编码H265并实现解码H265码流

H265 H265&#xff0c;也称为HEVC&#xff08;High Efficiency Video Coding&#xff09;&#xff0c;是一种高效视频编码格式。它是H264&#xff08;AVC&#xff09;的后继者&#xff0c;也是ITU-T和ISO/IEC联合开发的标准。相比H264&#xff0c;H265可以在同样的视频质量下&…

【数据库原理与应用 - 第三章】数据库设计

数据库设计的步骤 需求分析阶段概念模型设计阶段 —— E-R图逻辑模型设计阶段 —— 关系模型物理结构设计阶段 数据库实施阶段数据库运行和维护阶段 目录 数据库设计的步骤 一、需求分析 1、主要任务 2、对象模型 二、数据库概念结构设计 1、概念数据模型 E-R图 1、概念…

Mybatis《学习笔记(22版尚硅谷)》

Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff0c;iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到GithubiBatis一词来源于“intern…

C语言中的for循环语句

表达式1&#xff1a;设置初始条件&#xff0c;只执行一次&#xff0c;可以为多个变量设置初始值 表达式2&#xff1a;循环条件表达式&#xff0c;判断是否集训循环 表达式3&#xff1a;执行循环体后再执行 例如&#xff0c;使用for循环打印1-10的数字首先定义整形变量a0&…

【V4L2】 v4l2框架分析之v4l2_device

&#x1f440;&#x1f449;本系列文章基于linux内核版本4.1.15分析media子系统下的V4L2。先分析组成V4L2的核心数据结构以及各组成元素的含义和作用。相关文章&#xff1a; ❤&#xff08;1&#xff09;《【V4L2】v4l2框架分析之video_device》 ❤&#xff08;2&#xff09;《…

30分钟了解并学会git的使用(绝对干货)

概述&#xff1a; 在programmer行业有一句流传许久的话&#xff1a;不会用git的程序员&#xff0c;不是真的程序员&#xff01;&#xff01;&#xff01; 足以看出来git在业界的认可度有多高&#xff0c;所以我们混这行的都应该学会这个由Linux之父林纳斯开发 的第二大发明&a…

【QT/OpenCV】Qt创建并发布OpenCV dll项目

文章目录 01、开发版本02、QT创建dll项目03、dll项目配置说明04、dll动态库测试 01、开发版本 以下所有源码与软件都是基于下面的版本。 1、QT&#xff1a; Based on Qt 5.12.2 (MSVC 2017, 32 bit) 2、OpenCV&#xff1a; OpenCV – 4.5.1 tips&#xff1a; OpenCV的版本不一…

web漏洞-逻辑越权之登录脆弱支付篡改(34)

这节课是这两个内容&#xff0c;登录的内容会讲不完&#xff0c;会有一小点部分&#xff0c;在别的课将&#xff0c; #登录应用功能点产生的安全问题 只要有登录功能都可以检测&#xff08;排除之前讲过的&#xff09; 1.登陆点的暴力破口&#xff08;很好理解 2.http/http…

【第三节】列表

上一节介绍了最常见的两种数据类型 字符串和数字 这一节将介绍列表 列表 首先&#xff0c;什么是列表&#xff1f;列表是由一系列按照特定顺序排列的元素组成&#xff0c;在python中由中括号[ ]定义 首先列表是一系列的元素&#xff0c;这些元素的种类可以不同&#xff0c;一…

python3 爬虫相关学习9:BeautifulSoup 官方文档学习

目录 1 BeautifulSoup 官方文档 2 用bs 和 requests 打开 本地html的区别&#xff1a;代码里的一段html内容 2.1 代码和运行结果 2.2 用beautiful 打开 本地 html 文件 2.2.1 本地html文件 2.2.2 soup1BeautifulSoup(html1,"lxml") 2.3 用requests打开 本地 h…

微服务治理【注册发现】Nacos

目录 Nacos是什么&#xff1f; Nacos有什么用&#xff1f; 使用 Nacos 服务发现的流程图 Nacos是什么&#xff1f; Nacos是阿里巴巴开源的一个服务发现、配置管理和服务管理平台&#xff0c;是一种基于云原生架构的动态服务发现和配置管理工具。 Nacos有什么用&#xff…

什么是API测试?开发必知的8种API自动化测试类型

API测试 API自动化测试在产品质量控制和CI/CD流程检测中扮演着非常重要的角色。与GUI测试不同&#xff0c;API测试可以更灵活应地适应发布周期短和频繁变更的需求或产品&#xff0c;而且也不会破坏测试输出结果。 什么是API测试&#xff1f; API是应用程序编程接口的首字母缩…

jetLinks协议开发对接真实设备方式

jetLinks协议开发对接真实设备方式 拿到设备确定设备的SDKSDK调用流程梳理SDK集成JetLinks 拿到设备 首先拿到设备&#xff0c;确认设备型号 然后登入海康威视官网&#xff0c;下载 https://www.hikvision.com/cn/support/tools/hitools/ 连接设备修改其对应的IP地址使得本…

信号都是如何产生的,干货满满

目录 一、哪三大阶段 二、产生信号 1、通过键盘产生信号 2、系统调用 3、软件条件产生信号 4、硬件异常产生信号 三、Term和core是什么 一、信号一生三大阶段 1、产生信号&#xff1a;由通过键盘、系统调用、软件条件、硬件异常产生这几种方法产生信号。 2、信号储存&a…

JMeter必知必会系列 —— JMeter基础

1.1 JMeter概述 JMeter简介 Apache JMeter™是Apache组织开发的一款开源软件&#xff0c;是典型的纯Java开发的应用程序&#xff0c;可以在不同平台比如Windows、Linux或macOS系统上进行软件测试。JMeter主要用于应用程序的功能负载测试以度量软件的性能&#xff0c;也可以用于…

项目使用tensorflow2会出错,下载并使用tensorflow1

背景&#xff1a;使用pycharm安装总显示安装失败&#xff0c;使用pip安装也不行&#xff0c;只能使用conda配置虚拟环境手动安装 1、下载安装anaconda 官网下载&#xff0c;双击安装。用anaconda就是想使用虚拟环境&#xff0c;万一没弄好直接删了重新搞就行。 2、创建虚拟环境…

Kendo UI R2 2023 crack

Kendo UI R2 2023 crack 新组件&#xff1a;角度PDFViewer 直接在Angular应用程序中查看PDF文件&#xff0c;无需第三方软件或附加组件。 凭借直观的分页机制、强大的搜索功能和灵活的缩放选项&#xff0c;用户可以轻松导航和浏览PDF内容。 角度16支架 Angular 16引入了一系列改…

AWS CodeWhisperer(代码辅助工具)使用体验

工具 1.vscode 2.AWS Toolkit插件 CodeWhisperer插件的功能 1.自动优化代码&#xff1a;CodeWhisperer插件可以通过代码分析来自动优化代码&#xff0c;从而提高代码的质量和效率。 2.智能代码提示&#xff1a;CodeWhisperer插件可以根据代码上下文提供智能代码提示&#x…

C语言之数组详解(1)(更新前面数组博客的不足)

目录 一、一维数组 1.一维数组的创建和初始化 (1).数组的创建 (2).数组的初始化 2.一维数组的使用 3.一维数组在内存中的存储 二、二维数组 1.二维数组的创建和初始化 (1).二维数组的创建 (2).二维数组的初始化 2.二维数组的使用 3.二维数组在内存中的存储 三、数组作为函数参…

尚硅谷大数据技术Spark教程-笔记08【SparkSQL(介绍、特点、数据模型、核心编程、案例实操、总结)】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01【SparkCore&#xff08;概述、快速上手、运行环境、运行架构&#xff09;】尚硅谷大数据技术Spark教程…