机械臂的控制和跟踪
1 滑块控制
打开命令行并运行:
注意:如果末端执行器使用myGripper F100 力控夹爪,pymycobot 驱动库的版本必须大于3.6.4
# 2022 mycobot 320-M5 版本的默认串行端口名称为"/dev/ttyUSB0",波特率为 115200。某些型号的串行端口名称为 "dev/ttyACM0"。如果默认串行端口名称有误,可以将串行端口名称更改为"/dev/ttyACM0"。
roslaunch new_mycobot_320 mycobot_320_slider.launch port:=/dev/ttyUSB0 baud:=115200
# 如果末端配有Pro自适应夹爪,则运行(串行端口修改与上述相同):
roslaunch new_mycobot_320 mycobot_320_gripper_slider.launch port:=/dev/ttyUSB0 baud:=115200
# 如果末端配有myGripper F100 力控夹爪,则运行(串行端口修改与上述相同):
roslaunch new_mycobot_320 mycobot_320_force_gripper_slider.launch port:=/dev/ttyACM0 baud:=115200
打开 rviz 和一个滑块组件,您将看到如下界面:
如果末端装有Pro自适应夹爪,则会看到以下界面:
如果末端装有myGripper F100 力控夹爪,则会看到以下界面:
然后你就可以在 rviz 中 控制模型,通过拖动滑块使其移动。如果想让真实的霉菌机器人随着模型移动,则需要打开另一个命令行并运行:
注意:如果末端执行器使用myGripper F100 力控夹爪,pymycobot 驱动库的版本必须大于3.6.4
# 2022 mycobot 320-M5 版本的默认串行端口名称为"/dev/ttyUSB0",波特率为 115200。某些型号的串行端口名称为 "dev/ttyACM0"。如果默认串行端口名称有误,可以将串行端口名称更改为"/dev/ttyACM0"。
rosrun new_mycobot_320 mycobot_320_slider.py _port:=/dev/ttyUSB0 _baud:=115200
# 如果末端配有Pro自适应夹爪,则运行(串行端口修改与上述相同):
rosrun new_mycobot_320 mycobot_320_gripper_slider.py _port:=/dev/ttyUSB0 _baud:=115200
# 如果末端配有myGripper F100 力控夹爪,则运行(串行端口修改与上述相同):
rosrun new_mycobot_320 mycobot_320_force_gripper_slider.py _port:=/dev/ttyACM0 _baud:=115200
请注意:由于在命令输入的同时机械臂会移动到模型目前的位置,在您使用命令之前请确保 rviz 中的模型没有出现穿模现象 不要在连接机械臂后做出快速拖动滑块的行为,防止机械臂损坏
2 模型跟随
除了上述控制外,我们还可以让模型跟随真实的机械臂移动。
打开命令行并运行:
# 2022 mycobot 320-M5 版本的默认串行端口名称为"/dev/ttyUSB0",波特率为 115200。某些型号的串行端口名称为 "dev/ttyACM0"。如果默认串行端口名称有误,可以将串行端口名称更改为"/dev/ttyACM0"。
rosrun new_mycobot_320 mycobot_320_follow_display.py _port:=/dev/ttyUSB0 _baud:=115200
然后打开另一个命令行并运行:
roslaunch new_mycobot_320 mycobot_320_follow_display.launch
它将 打开 rviz,显示模型跟随效果。
3 GUI 控制
在前述内容的基础上,本软件包还提供了一个简单的图形用户界面(GUI)控制界面。连接到 mycobot。
打开命令行:
# 2022 mycobot 320-M5 版本的默认串行端口名称为"/dev/ttyUSB0",波特率为 115200。某些型号的串行端口名称为 "dev/ttyACM0"。如果默认串行端口名称有误,可以将串行端口名称更改为"/dev/ttyACM0"。
roslaunch new_mycobot_320 mycobot_320_simple_gui.launch port:=/dev/ttyUSB0 baud:=115200
注意: 使用夹爪开关按钮前,请确保自适应夹爪已连接至机器人手臂末端。
4 键盘控制
在 new_mycobot_320_pi
软件包中添加了键盘控制功能,并在 rviz 中执行实时同步。 该功能依赖于 pythonApi,因此请务必与真正的机械臂连接。
打开命令行并运行:
# 2022 mycobot 320-M5 版本的默认串行端口名称为"/dev/ttyUSB0",波特率为 115200。某些型号的串行端口名称为 "dev/ttyACM0"。如果默认串行端口名称有误,可以将串行端口名称更改为"/dev/ttyACM0"。
roslaunch new_mycobot_320 mycobot_320_teleop_keyboard.launch port:=/dev/ttyUSB0 baud:=115200
运行效果如下
mycobot 的信息将在命令行中输出如下:
SUMMARY
========
PARAMETERS
* /mycobot_services/baud: 115200
* /mycobot_services/port: /dev/ttyUSB0
* /robot_description: <?xml version="1....
* /rosdistro: kinetic
* /rosversion: 1.12.1.17
NODES
/
mycobot_services (new_mycobot_320/mycobot_services.py)
real_listener (new_mycobot_320/listen_real.py)
robot_state_publisher (robot_state_publisher/state_publisher)
rviz (rviz/rviz)
auto-starting new master
process[master]: started with pid [1333]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to f977b3f4-b3a9-11eb-b0c8-d0c63728b379
process[rosout-1]: started with pid [1349]
started core service [/rosout]
process[robot_state_publisher-2]: started with pid [1357]
process[rviz-3]: started with pid [1367]
process[mycobot_services-4]: started with pid [1380]
process[real_listener-5]: started with pid [1395]
[INFO] [1620882819.196217]: start ...
[INFO] [1620882819.205050]: /dev/ttyUSB0,115200
MyCobot Status
--------------------------------
Joint Limit:
joint 1: -165 ~ +165
joint 2: -165 ~ +165
joint 3: -165 ~ +165
joint 4: -165 ~ +165
joint 5: -165 ~ +165
joint 6: -175 ~ +175
Connect Status: True
Servo Infomation: all connected
Servo Temperature: unknown
Atom Version: unknown
[INFO] [1620882819.435778]: ready
然后打开另一个命令行运行:
rosrun new_mycobot_320 mycobot_320_teleop_keyboard.py
你将看到命令行输出如下:
Mycobot Teleop Keyboard Controller
---------------------------
Movimg options(control coordinations [x,y,z,rx,ry,rz]):
w(x+)
a(y-) s(x-) d(y+)
z(z-) x(z+)
u(rx+) i(ry+) o(rz+)
j(rx-) k(ry-) l(rz-)
Gripper control:
g - open
h - close
Other:
1 - Go to init pose
2 - Go to home pose
3 - Resave home pose
q - Quit
currently: speed: 50 change percent 5
在该终端中,您可以控制机械臂的状态,并使用命令行中的按键移动机械臂。
本脚本支持的参数:
- _speed:机械臂的运动速度
- _change_percent:移动距离百分比
5 moveit 使用
mycobot_ros
整合了 MoveIt 部分。
注意:如果末端执行器使用myGripper F100 力控夹爪,pymycobot 驱动库的版本必须大于3.6.4
操作效果如下:
roslaunch new_mycobot_320_moveit mycobot320_moveit.launch
# 如果末端装有Pro自适应夹爪,则运行:
roslaunch new_mycobot_320_gripper_moveit mycobot320_gripper_moveit.launch
# 如果末端装有myGripper F100 力控夹爪,则运行:
roslaunch new_mycobot_320_force_gripper_moveit mycobot320_force_gripper_moveit.launch
操作效果如下:
如果末端装有Pro自适应夹爪,则操作效果如下:
>
如果末端装有myGripper F100 力控夹爪,则操作效果如下:
如果想让真正的机械臂同步执行计划,则需要打开另一条命令行并运行:
# 2022 mycobot 320-M5 版本的默认串行端口名称为"/dev/ttyUSB0",波特率为 115200。某些型号的串行端口名称为 "dev/ttyACM0"。如果默认串行端口名称有误,可以将串行端口名称更改为"/dev/ttyACM0"。
rosrun new_mycobot_320_moveit sync_plan.py _port:=/dev/ttyUSB0 _baud:=115200
# 如果末端配有Pro自适应夹爪,则运行(串行端口修改与上述相同):
rosrun new_mycobot_320_gripper_moveit sync_plan.py _port:=/dev/ttyUSB0 _baud:=115200
# 如果末端配有myGripper F100 力控夹爪,则运行(串行端口修改与上述相同):
rosrun new_mycobot_320_force_gripper_moveit sync_plan.py _port:=/dev/ttyACM0 _baud:=115200
注意: 如果末端配有自适应夹爪 或者 myGripper F100 力控夹爪,并且需要规划夹爪,则需要将规划组切换为夹爪的规划组。
>
修改运动速度
为了防止关节在实际机械臂运动过程中晃动,需要降低关节的运动速度。
在
sync_plan.py
文件中,修改机械臂 Python API 的速度参数,此处改为 25。... def callback(data): # rospy.loginfo(rospy.get_caller_id() + "%s", data) data_list = [] for index, value in enumerate(data.position): radians_to_angles = round(math.degrees(value), 2) data_list.append(radians_to_angles) rospy.loginfo(rospy.get_caller_id() + "%s", data_list) mc.send_angles(data_list, 25) # Change speed to 25 ...
在 Moveit RViz 界面中,修改速度和加速度的缩放比例。在这里,将其改为 0.5,然后保存当前配置。
>