概述
主要步骤分为两步:一、安装驱动;二、配置ROS包
硬件和平台要求
型号:Geomagic Touch
通信接口:USB (注意,不是LAN口,也不是Fireware,后两种的驱动配置方法是不同的)
环境:Ubuntu 18.04 + ROS Melodic
步骤
一、安装驱动
参照官方的链接,我在这里概述所有步骤并大致解释一下含义。
- 官方链接里包含两个压缩包,一是OpenHaptic的环境配置文件;二是Touch的驱动文件。还有一个驱动安装教程。
- 环境配置文件是一个后缀为openhaptics的压缩包,我们把它解压到任意位置,然后打开terminal,cd到解压后的文件夹目录下,用指令
sudo ./install
安装即可。 - 另外一个是名为TouchDriver的驱动,关于驱动的安装,遵循教程即可。在step1-8中,需要注意的是:
- step1-2 需要用
sudo
权限复制文件; - step3 不用操作,因为ubuntu版本比较高,自带了qt环境;
- step4-6 是创建文件夹config用于保存Touch连接后的配置。环境变量GTDD_HOME我们也可以直接写入/etc/enviroment文件并保存,只需添加一行
GTDD_HOME="/usr/share/3DSystems"
。环境变量的生效需要先注销再重新登入ubuntu系统; - step7 是每次连接Touch需要进行的操作,一个是检测haptics设备的端口号(只有连上设备才会有形如
/dev/ttyACM*
的输出),需要在解压后的TouchDriver目录下运行bash ListUSBHapticDevices
;一个是给端口赋权限sudo chmod 777 [端口名]
。后面小字是LAN端口设备需要的配置,与我们无关; - Step8 在TouchDriver的bin目录下运行
sudo ./Touch_Setup
,注意要sudo权限,不然会没法把结果保存到config。这个程序运行后会出现一个界面,确认设备号和驱动版本有显示后,我们点击"apply"和"ok"。然后,运行sudo ./Touch_Diagnostic
对Touch进行标定(先把笔头插入孔中)。前述步骤都没问题的话,这个程序可以正常运行并实时显示Touch的状态。如果出现找不到设备的状态,请确认端口权限给了,然后是否是sudo运行的Touch_Setup。
二、配置ROS包环境
- 从github下clone包bharatm11,这里我们用bharatm11的版本,因为他对针对USB版的Touch做了一点修改。
- bharatm11也给了一个环境配置步骤,这里我们可以不用管,只需要确认他给的步骤1中的运行依赖项是否安装了,缺的话得补上,安装指令为
sudo apt-get install --no-install-recommends freeglut3-dev g++ libdrm-dev libexpat1-dev libglw1-mesa libglw1-mesa-dev libmotif-dev libncurses5-dev libraw1394-dev libx11-dev libxdamage-dev libxext-dev libxt-dev libxxf86vm-dev tcsh unzip x11proto-dri2-dev x11proto-gl-dev x11proto-print-dev
- 然后编译catkin工作空间,确定没问题后,即可运行
roslaunch omni_common omni_state.launch
- 并查看话题
rostopic echo /phantom/pose
- 若窗口不断打印输出状态,即没问题,整个配置过程完成,后面就可以根据这个包做一些开发工作
最后
- 我们以后每次连接Touch设备时,都需要操作步骤step 7 (确认端口和给端口连接)和 step 8(设置Touch_Setup), 然后才能成功运行ros包的文件连接Touch和读取状态。
- 3DSytems的官网给出了好几种配置Touch驱动的教程和文件,bharatm11和fsuarez6也给出了很多参考链接和文件,但是千万要注意,其中很多教程是不适用于USB版本的Touch的。
- 另外, 亲测ubuntu16.04无法安装和成功运行Touch驱动(虽然官方已经明确指出平台要求ubuntu18,要是谁试成功了可以说一下……)