FrankaEmika官方配置文档:
https://frankaemika.github.io/docs/install_linux.html
官方目前给出的有windows和ubuntu版本,推荐ubuntu,windows的光是一些链接库都非常难装,且目前网上没有发现有人尝试过,因此不建议。
环境需求
- ubuntu 16.04
- ROS kinetic
注意:16.04也有好多版,目前博主尝试好用的是16.04.5
关于系统和ROS的安装,参看网络教程
libfranka&franka-ros下载编译
这里选择Building from source方案,所以不要运行这一条!
sudo apt install ros-kinetic-libfranka ros-kinetic-franka-ros
libfranka部分:
一些依赖项的安装:
sudo apt install build-essential cmake git libpoco-dev libeigen3-dev
git下载:
git clone -b 0.5.0 https://github.com/frankaemika/libfranka
注意:这里选择的是0.5.0版本,这个实际是跟你买的设备有关系的,如果默认下载的0.6.0,可能会存在如下错误:
libfranka: Imcompatible library version(server version:2, library version: 3)
运行franka-ros里的文件,如果出现这个问题。就是你装错版本了,checkout version看看,是不是装成0.6.0 如果是,按上面那条重装libfranka吧。
接着:
cd libfranka
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
下载的时候,很可能下到的是不完整的版本,common文件夹是空的。到这一步,就会报错,需要手动下载common文件夹。
https://github.com/frankaemika/libfranka/tree/5ca631efda3d077e5d9f5f7299d10575d832cfc2
在这个位置找到并下载common文件夹,替换原来的空common文件夹。
后面的一串码,来源于gitclone的步骤,所以下载完千万别关terminal,把下载的版本号保存起来
cmake --build .
注意:一定要编成release版,否则,可能后期存在通讯问题,libfanka因为通讯频率不够,接不上FCI,机械臂动不了
编译需要一些时间
franka-ros部分:
cd /path/to/desired/folder
mkdir -p catkin_ws/src
cd catkin_ws
source /opt/ros/kinetic/setup.sh
catkin_init_workspace src
ROS基础操作,建一个ROS的工作空间,关于工作空间的source问题,新手自行百度。
git clone --recursive https://github.com/frankaemika/franka_ros src/franka_ros
默认安装即可,目前未发现有版本问题。
安装一些依赖:
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y --skip-keys libfranka
catkin编译:
catkin_make -DCMAKE_BUILD_TYPE=Release -DFranka_DIR:PATH=/path/to/libfranka/build
这里看清楚了:/path/to/libfranka/build,要根据自己的情况更改的
source一下:
source devel/setup.sh
建议还是写到~/.bashrc里吧,这样不用每次都source:
source ~/catkin_ws/devel/setup.sh
运行roscd, 检查一下
刷内核
关键一步,影响与机械臂通讯频率的重要一步,干坏了会导致机械臂连不上libfranka
惯例,一些依赖:
apt-get install build-essential bc curl ca-certificates fakeroot gnupg2 libssl-dev lsb-release libelf-dev bison flex
下载和校验
下载编译内核的原材料:
curl -SLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.12.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.12.tar.sign
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patch-4.14.12-rt10.patch.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patch-4.14.12-rt10.patch.sign
网比较好的大佬可以直接这么操作,如果嫌速度慢,也可以按照网址自己到windows迅雷下载,快很多
把压缩包都解压
下载校验:(官方给的解释是验证一下你下载的是不是完整可靠的包,保险起见,还是通过校验再编译比较好,当然自信的也可以不验)
gpg2 --verify linux-4.14.12.tar.sign
如果你的结果是这样:
$ gpg2 --verify linux-4.14.12.tar.sign
gpg: assuming signed data in 'linux-4.14.12.tar'
gpg: Signature made Fr 05 Jan 2018 06:49:11 PST using RSA key ID 6092693E
gpg: Can't check signature: No public key
就是没有公钥,自己加一下
内核的公钥:
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 0x6092693E
实时补丁的公钥:
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 0x2872E4CC
导入公钥也有别的办法,要是这个不行,自行百度
再校验一下:
$ gpg2 --verify linux-4.14.12.tar.sign
$ gpg2 --patch-4.14.12-rt10.patch.sign
通过校验的示例:
$ gpg2 --verify linux-4.14.12.tar.sign
gpg: assuming signed data in 'linux-4.14.12.tar'
gpg: Signature made Fr 05 Jan 2018 06:49:11 PST using RSA key ID 6092693E
gpg: Good signature from "Greg Kroah-Hartman <gregkh@linuxfoundation.org>" [unknown]
gpg: aka "Greg Kroah-Hartman <gregkh@kernel.org>" [unknown]
gpg: aka "Greg Kroah-Hartman (Linux kernel stable release signing key) <greg@kroah.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 647F 2865 4894 E3BD 4571 99BE 38DB BDC8 6092 693E
编译内核
注意:哪台电脑装,就在哪台上编译,不要直接使用别的机器编译好的文件,可能导致内核刷不好,后续没法用
tar xf linux-4.14.12.tar
cd linux-4.14.12
patch -p1 < ../patch-4.14.12-rt10.patch
配置内核:
make oldconfig
遇到这个:
Preemption Model
1. No Forced Preemption (Server) (PREEMPT_NONE)
2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT__LL) (NEW)
4. Preemptible Kernel (Basic RT) (PREEMPT_RTB) (NEW)
> 5. Fully Preemptible Kernel (RT) (PREEMPT_RT_FULL) (NEW)
选上5
其他的一路enter就对了。会跳出一大长串的配置信息。
开始编译:
fakeroot make -j4 deb-pkg
这里,你的电脑有几个cpu核,就把4换成几。这样可以利用所有的核一起来编译,因为编译这个非常耗时间,所以建议把所有的核都用上。
到了最后,会卡在最后一个包的位置。包文件为:
/linux-image-4.14.12-rt10-dbg_4.14.12_rt10-1_amd64.deb
实际上,官方给的文档里,不需要安装这个包,,所以,等不了可以放弃,能等的可以等等,毕竟还是正常编完比较稳妥。
dpkg安装三连:
sudo dpkg -i ../linux-headers-4.14.12-rt10_*.deb ../linux-image-4.14.12-rt10_*.deb
把那三个好使的deb都装上,带dbg的就别装了
重启一下,进ubuntu 高级选项,可以看到你安装的内核。
尝试直接进普通模式,如果可以,说明你装的挺好。如果进去黑屏了,也不用慌,还可以试试从recovery模式进去。遇到红色界面,一路enter,看看能不能行。还不行,你只能卸载内核,重新装了……
进去之后,检查一下,是不是装上需要的内核了:
尝试指令:
uname -a
如果版本正确,带PREEMPT RT
,/sys/kernel/realtime
里有一个1,就是没毛病了。
添加实时组许可
sudo addgroup realtime
sudo usermod -a -G realtime $(whoami)
$(whoami) 改自己用户名,不改直接写这个貌似也可以
sudo gedit /etc/security/limits.conf
在文档最后面加上:
@realtime soft rtprio 99
@realtime soft priority 99
@realtime soft memlock 102400
@realtime hard rtprio 99
@realtime hard priority 99
@realtime hard memlock 102400
重启一次
配置部分结束
测试环境
再libfranka/build/examples路径下
运行
./communication_test 172.16.0.2
如果提示你接下来会移动机械臂,让你注意,按一下enter
机械臂动了,跳了一长串通讯信息,最后提示10000次尝试,丢了xx次,就证明libfranka和FCI连上了
也可以尝试其他的一些demo
也在这个路径下,记得调用一定要加上机械臂的ip
尝试franka-ros:
roslaunch franka_example_controllers move_to_start.launch robot_ip:=172.16.0.2
会跳出rviz的界面
如果报了一些错,一般都是缺包,按照提示安装ros-kinetic的包就可以。
建议直接装上moveit
sudo apt-get install ros-kinetic-moveit
缺好多依赖都是moveit的一些东西,直接装完整的就行
到能跳rviz界面,机械臂能动,terminal 不报错,就证明基本能行了。