FrankaEmika官方配置文檔:
https://frankaemika.github.io/docs/install_linux.html
官方目前給出的有windows和ubuntu版本涯贞,推薦ubuntu炭序,windows的光是一些鏈接庫(kù)都非常難裝郊酒,且目前網(wǎng)上沒有發(fā)現(xiàn)有人嘗試過惫周,因此不建議凌唬。
環(huán)境需求
- ubuntu 16.04
- ROS kinetic
注意:16.04也有好多版腹殿,目前博主嘗試好用的是16.04.5
關(guān)于系統(tǒng)和ROS的安裝舷蒲,參看網(wǎng)絡(luò)教程
libfranka&franka-ros下載編譯
這里選擇Building from source方案趟佃,所以不要運(yùn)行這一條扇谣!
sudo apt install ros-kinetic-libfranka ros-kinetic-franka-ros
libfranka部分:
一些依賴項(xiàng)的安裝:
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版本,這個(gè)實(shí)際是跟你買的設(shè)備有關(guān)系的闲昭,如果默認(rèn)下載的0.6.0罐寨,可能會(huì)存在如下錯(cuò)誤:
libfranka: Imcompatible library version(server version:2, library version: 3)
運(yùn)行franka-ros里的文件,如果出現(xiàn)這個(gè)問題序矩。就是你裝錯(cuò)版本了鸯绿,checkout version看看,是不是裝成0.6.0 如果是贮泞,按上面那條重裝libfranka吧楞慈。
接著:
cd libfranka
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
下載的時(shí)候,很可能下到的是不完整的版本啃擦,common文件夾是空的囊蓝。到這一步,就會(huì)報(bào)錯(cuò)令蛉,需要手動(dòng)下載common文件夾聚霜。
https://github.com/frankaemika/libfranka/tree/5ca631efda3d077e5d9f5f7299d10575d832cfc2
在這個(gè)位置找到并下載common文件夾,替換原來的空common文件夾珠叔。
后面的一串碼蝎宇,來源于gitclone的步驟,所以下載完千萬(wàn)別關(guān)terminal祷安,把下載的版本號(hào)保存起來
cmake --build .
注意:一定要編成release版姥芥,否則,可能后期存在通訊問題汇鞭,libfanka因?yàn)橥ㄓ嶎l率不夠凉唐,接不上FCI庸追,機(jī)械臂動(dòng)不了
編譯需要一些時(shí)間
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基礎(chǔ)操作,建一個(gè)ROS的工作空間台囱,關(guān)于工作空間的source問題淡溯,新手自行百度。
git clone --recursive https://github.com/frankaemika/franka_ros src/franka_ros
默認(rèn)安裝即可簿训,目前未發(fā)現(xiàn)有版本問題咱娶。
安裝一些依賴:
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,要根據(jù)自己的情況更改的
source一下:
source devel/setup.sh
建議還是寫到~/.bashrc里吧强品,這樣不用每次都source:
source ~/catkin_ws/devel/setup.sh
運(yùn)行roscd膘侮, 檢查一下
刷內(nèi)核
關(guān)鍵一步,影響與機(jī)械臂通訊頻率的重要一步择懂,干壞了會(huì)導(dǎo)致機(jī)械臂連不上libfranka
慣例喻喳,一些依賴:
apt-get install build-essential bc curl ca-certificates fakeroot gnupg2 libssl-dev lsb-release libelf-dev bison flex
下載和校驗(yàn)
下載編譯內(nèi)核的原材料:
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
網(wǎng)比較好的大佬可以直接這么操作另玖,如果嫌速度慢困曙,也可以按照網(wǎng)址自己到windows迅雷下載,快很多
把壓縮包都解壓
下載校驗(yàn):(官方給的解釋是驗(yàn)證一下你下載的是不是完整可靠的包谦去,保險(xiǎn)起見慷丽,還是通過校驗(yàn)再編譯比較好,當(dāng)然自信的也可以不驗(yàn))
gpg2 --verify linux-4.14.12.tar.sign
如果你的結(jié)果是這樣:
$ 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
就是沒有公鑰鳄哭,自己加一下
內(nèi)核的公鑰:
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 0x6092693E
實(shí)時(shí)補(bǔ)丁的公鑰:
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 0x2872E4CC
導(dǎo)入公鑰也有別的辦法要糊,要是這個(gè)不行,自行百度
再校驗(yàn)一下:
$ gpg2 --verify linux-4.14.12.tar.sign
$ gpg2 --patch-4.14.12-rt10.patch.sign
通過校驗(yàn)的示例:
$ 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
編譯內(nèi)核
注意:哪臺(tái)電腦裝妆丘,就在哪臺(tái)上編譯锄俄,不要直接使用別的機(jī)器編譯好的文件,可能導(dǎo)致內(nèi)核刷不好勺拣,后續(xù)沒法用
tar xf linux-4.14.12.tar
cd linux-4.14.12
patch -p1 < ../patch-4.14.12-rt10.patch
配置內(nèi)核:
make oldconfig
遇到這個(gè):
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就對(duì)了奶赠。會(huì)跳出一大長(zhǎng)串的配置信息。
開始編譯:
fakeroot make -j4 deb-pkg
這里药有,你的電腦有幾個(gè)cpu核毅戈,就把4換成幾。這樣可以利用所有的核一起來編譯愤惰,因?yàn)榫幾g這個(gè)非常耗時(shí)間苇经,所以建議把所有的核都用上。
到了最后宦言,會(huì)卡在最后一個(gè)包的位置扇单。包文件為:
/linux-image-4.14.12-rt10-dbg_4.14.12_rt10-1_amd64.deb
實(shí)際上,官方給的文檔里奠旺,不需要安裝這個(gè)包蜘澜,阻桅,所以,等不了可以放棄兼都,能等的可以等等嫂沉,畢竟還是正常編完比較穩(wěn)妥。
dpkg安裝三連:
sudo dpkg -i ../linux-headers-4.14.12-rt10_*.deb ../linux-image-4.14.12-rt10_*.deb
把那三個(gè)好使的deb都裝上扮碧,帶dbg的就別裝了
重啟一下趟章,進(jìn)ubuntu 高級(jí)選項(xiàng),可以看到你安裝的內(nèi)核慎王。
嘗試直接進(jìn)普通模式蚓土,如果可以,說明你裝的挺好赖淤。如果進(jìn)去黑屏了蜀漆,也不用慌,還可以試試從recovery模式進(jìn)去咱旱。遇到紅色界面确丢,一路enter,看看能不能行。還不行吐限,你只能卸載內(nèi)核鲜侥,重新裝了……
進(jìn)去之后,檢查一下诸典,是不是裝上需要的內(nèi)核了:
嘗試指令:
uname -a
如果版本正確描函,帶PREEMPT RT
,/sys/kernel/realtime
里有一個(gè)1狐粱,就是沒毛病了舀寓。
添加實(shí)時(shí)組許可
sudo addgroup realtime
sudo usermod -a -G realtime $(whoami)
$(whoami) 改自己用戶名,不改直接寫這個(gè)貌似也可以
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
重啟一次
配置部分結(jié)束
測(cè)試環(huán)境
再libfranka/build/examples路徑下
運(yùn)行
./communication_test 172.16.0.2
如果提示你接下來會(huì)移動(dòng)機(jī)械臂肌蜻,讓你注意互墓,按一下enter
機(jī)械臂動(dòng)了,跳了一長(zhǎng)串通訊信息宋欺,最后提示10000次嘗試轰豆,丟了xx次,就證明libfranka和FCI連上了
也可以嘗試其他的一些demo
也在這個(gè)路徑下齿诞,記得調(diào)用一定要加上機(jī)械臂的ip
嘗試franka-ros:
roslaunch franka_example_controllers move_to_start.launch robot_ip:=172.16.0.2
會(huì)跳出rviz的界面
如果報(bào)了一些錯(cuò)酸休,一般都是缺包,按照提示安裝ros-kinetic的包就可以祷杈。
建議直接裝上moveit
sudo apt-get install ros-kinetic-moveit
缺好多依賴都是moveit的一些東西斑司,直接裝完整的就行
到能跳rviz界面,機(jī)械臂能動(dòng),terminal 不報(bào)錯(cuò)宿刮,就證明基本能行了互站。