ROS控制elfin5机械臂教程

测试环境
电脑:DELL G7 7588
处理器: i5-8300H
显卡:GTX1060MQ 6G显存
已配置:ROS iai_kinect PCL

1 源代码下载

从 github上 https://github.com/hans-robot/elfin_robot 下载源代码,解压后放入ROS功能包的src文件夹中。

2 机械臂控制

2.1 准备elfin_drivers.yaml文件和其他文件

文件内容为(此为示例):

elfin_ethernet_name: eth0

elfin:
    slave_no: [1, 2, 3]
    joint_names: [elfin_joint2, elfin_joint1, elfin_joint3, elfin_joint4, elfin_joint5, elfin_joint6]
    reduction_ratios: [101, 101, 101, 101, 101, 101]
    count_zeros: [683413607, 701046054, 665528259, 662768691, 659282657, 662421744]

注意:1、上面的elfin_ethernet_name是计算机与机械臂连接的网卡名,可用ifconfig命令查看。2、这里的count_zeros指的是机械臂的原点,原点信息在纸质发货文件上,按照213456的顺序填写好。
在elfin_basic_api/efin_gui.py 文件中,把机器人的运动速度从0.4调整为0.2

velocity_scaling_init=rospy..get_param(self.elfin_basic_api_ns+'velocity_scaling',default=0.4)

改为:

velocity_scaling_init=rospy..get_param(self.elfin_basic_api_ns+'velocity_scaling',default=0.2)

为了保证使用安全,将elfin5_moveit_config/moveit.rviz里的:

MoveIt_Planning_Attempts: 10
MoveIt_Planning_Time: 5

改为:

MoveIt_Planning_Attempts: 10
MoveIt_Velocity_Scaling: 0.2
MoveIt_Acceleration_Scaling: 0.2
MoveIt_Planning_Time: 5

2.2 加载机器人模型

运行以下命令:

roslaunch elfin_robot_bringup elfin3_bringup.launch

2.3 给Linux系统内核打实时补丁

参考教程:https://www.jianshu.com/p/8787e45a9e01
【最近重装系统后发现,其实不用打实时补丁也能够控制Elfin机械臂】

2.3.1 先下载后对应版本的内核与内核补丁

实时补丁下载地址
补丁版本:patch-4.16.18-rt12.patch.gz
相应的内核下载地址
内核版本:linux-4.16.18.tar.gz

注意:安装了内核补丁后,Nvidia显卡驱动和安装好的CUDA环境将不能使用,因为英伟达显卡驱动不支持实时内核。
但是为了使用深度学习算法,必须安装支持NVIDIA驱动的linux操作系统实时内核,参考文献中有这个内核下载,不过要重装系统,先占个坑。

【2019年10月21日,试验失败。在安装完这个ArchLinux后发现ROS并不支持这种Linux系统,故没有进行下去,没有试验该系统是否可以安装Nvidia驱动】

根据教程走,但是遇到两个问题:

问题:/bin/sh: 1: bison : not found

用以下代码解决:

sudo apt-get install bison -y
问题:/bin/sh: 1: flex: not found

用以下代码解决:

sudo apt-get install flex

3 利用Elfin的源码控制机械臂运动

利用自己编写好的launch文件打开Rviz界面与api控制接口(经过测试后发现,最好不要通过一个launch文件的方式来打开,因为launch文件执行命令是随机的,而打开机器人的过程需要按顺序执行命令,因此用一个launch文件打开机器人的话总是会遇到问题,比如打不开机器人或者机器人突然变成怪异的姿态):

roslaunch elfin_robot_bringup elfin5_test.launch

elfin5_test.launch文件的内容如下:

<launch>
	<include file="$(find elfin_robot_bringup)/launch/elfin5_bringup.launch" />
	<include file="$(find elfin5_moveit_config)/launch/moveit_planning_execution.launch" />
	<include file="$(find elfin_robot_bringup)/launch/elfin_ros_control_v2.launch" />
	<include file="$(find elfin_basic_api)/launch/elfin_basic_api.launch" />
	
	<!-- start the Kinect -->
    <include file="$(find kinect2_bridge)/launch/kinect2_bridge.launch" >
		<arg name="depth_method" value="opengl" />
		<arg name="reg_method" value="cpu" />
		<arg name="publish_tf" value="true" />
    </include>
    
    <include file="$(find easy_handeye)/launch/publish.launch" />
</launch>   

参考文章:
elfin机械臂控制源码
给linux内核打实时补丁preempt_rt
支持NVIDIA-418.56.2驱动的linux操作系统实时内核

你可能感兴趣的:(路径规划学习,elfin机械臂,ROS,Kinect)