实验室买来一台 franka 机械臂,近日都在忙于机械臂的上位机环境配置,参考了官方的配置文档以及网上一些大佬的博客,现做一些总结。
Franka 官方配置文档:https://frankaemika.github.io/docs/installation_linux.html
FrankaEmika_Panda 环境配置:https://www.jianshu.com/p/664b4cf76606
Franka 官方文档给出了 Linux 和 Windows 的配置方案,但在实验室里我们常用的实验环境是 Linux 系统,所以在 Windows 系统的配置方案就没有亲自去实践,此处不再介绍。
1. 硬件条件
- Ubuntu 16.04 系统
- Ros kinetic
- Moveit
2. 安装Ros功能包
两种方式安装:二进制包安装,源码安装
2.1 二进制包安装
sudo apt-get install ros-kinetic-libfranka ros-kinetic-franka-ros
终端中一道命令即可解决,方便快捷,但是这些功能包全部安装到根目录下:/opt/ros/kinetic/share 该目录下存有很多 Ros 相关的文件,查看、使用起来很不方便,日后使用容易造成混乱。 本人也是通过源码安装方式失败才尝试此种方法,但安装成功后,有些文件找不到,最后还是重新肝源码安装。
2.2 源码安装
开始之前,若尝试过上边的二进制包安装方式,一定要执行一下命令:
sudo apt remove "*franka*" //删除跟franka 相关的文件
防止后面的编译冲突
2.2.1 安装编译 libfranka
建议新建一个工作空间,放置跟 franka 相关的文件
mkdir -p ~/catkin_franka/src
cd ~/catkin_franka/src
catkin_init_workspace
cd ~/catkin_franka
source devel/setup.bash //建议添加到 ./bsahrc 文件中
sudo apt install build-essential cmake git libpoco-dev libeigen3-dev
cd ~/catkin_franka
git clone --recursive https://github.com/frankaemika/libfranka //默认下载最新版本
cd libfranka
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
- 可能出现连不上
https://github.com 的情况,可在网址前面加上https://ghproxy.com/ 。 - 下载也可能下到的是不完整的版本,common文件夹是空的,需要手动下载common文件夹,替换原来的空common文件夹。
- 执行这一步
cmake -DCMAKE_BUILD_TYPE=Release .. 时,也可能出现timeout 的情况,可在libfranka/cmake/GoogleTest-CMakeLists.txt.in 文件中加入如下内容
注意:一定要编成release 版,否则,后期可能存在通讯问题,libfanka 因为通讯频率不够,接不上 FCI ,出现机械臂动不了的情况
至此,libfranka 已经编译完成。
2.2.2 安装编译 franka_ros
cd ~/catkin_franka/src
git clone --recursive https://github.com/frankaemika/franka_ros //默认下载最新版本
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y --skip-keys libfranka
catkin_make -DCMAKE_BUILD_TYPE=Release -DFranka_DIR:PATH=/path/to/libfranka/build
source devel/setup.sh
- 在下载安装依赖那一步可能会出现
rosdep 失败的情况 ,这可能是我在安装 ROS 时忽略了rosdep update 失败的后果,隔壁的师兄刚装的新系统,这一步就直接执行成功了。出现这种失败的情况,终端中会报出相应的错误原因,提示缺少什么,记得其中有一个panda_moveit_config ,还有其他几个包,可直接手动安装 sudo apt-get install ros-kinetic-panda-moveit-config - 在编译安装之前,提前看一下下载下来的
franka_ros 包里是不是还有一个franka_ros 包,这个包与上一层的包名重复,要把里层的franka_ros 包移除,才能编译成功 PATH=/path/to/libfranka/build 这一命令不要傻乎乎的直接执行,需要换成自己的libfranka/build 的路径,如果按照我的安装思路走下来的,此处换成PATH=~/catkin_franka/libfranka/build 即可- 我在编译安装的时候还出现了 gazebo 版本过低的错误,为省事,直接将
franka_gazebo 包也移除了,后期若在 gazebo 中建模,还需升级一下 source devel/setup.sh 若是在之前建立工作空间时,已写入 ./bsahrc 文件中,可忽略此步- 以上方法还是不能通过的话,还有一个比较麻烦的方法,挨个编译功能包,缺少依赖安装相应依赖
– catkin_make -DCATKIN_WHITELIST_PACKAGES="包名"
3. 安装实时内核
与一般机器人不同的是,Franka 机械臂需要实时内核,使用 libfranka 控制机械臂
3.1 首先,安装必要的依赖
sudo apt-get install build-essential bc curl ca-certificates fakeroot gnupg2 libssl-dev lsb-release libelf-dev bison flex
3.2 选择实时内核的版本
使用uname -r 可查看当前电脑使用的内核版本,一般不是实时内核,我们需要自行安装编译实时内核。
推荐使用与自己电脑当前内核最接近的内核版本,本人直接下载的是Franka 官方文档提供的 4.14.12-rt10 从网上了解,选择实时内核版本时,不必选择与自带内核号一致的版本,也可以安装对应的generic内核。有时候甚至可能出现在某一版本内核下编译出错,换一个内核却可以的情况,但自己也是道听途书,没有亲身经历,不怕麻烦的可以试试。
mkdir ~/kernel && cd ~/kernel
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
xz -d linux-4.14.12.tar.xz
xz -d patch-4.14.12-rt10.patch.xz
- 下载 kernel 时,速度很慢,可以换网络试试,手机热点速度稍微快一点
走到这一步,Franka 官方文档中提到一个验证下载文件的完整性,尝试了几次,连不上 hkp://keys.gnupg.net 直接放弃验证,大胆相信下载文件是完整的。验证步骤在Franka 官方文档可见,此处不再赘述。
3.3 编译内核
tar xf linux-4.14.12.tar
cd linux-4.14.12
patch -p1 < ../patch-4.14.12-rt10.patch
make oldconfig
make oldconfig 会打开一个基于文本的配置菜单,当被问及抢占模型(Preemption Model)时,选择完全抢占内核(Fully Preemptible Kernel),保持其他设置为默认,按回车即可,待设置完成。
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)
此时已经准备好编译内核,执行以下命令,根据自己电脑的 CPU 核数,调整 -j 后面的数字,保证每个 CPU 核都用上,节省时间。
fakeroot make -j4 deb-pkg
此时可以休息一会了,因为编译内核的过程很漫长,可以出去转转或者干点其他事。 待编译完成,在 kernel 文件夹里会多出几个.deb 包,就可以安装了。
sudo dpkg -i ../linux-headers-4.14.12-rt10_*.deb ../linux-image-4.14.12-rt10_*.deb
安装完成后,重启一下,在 grub 引导界面的 Ubuntu高级选项 里就有自己安装的实时内核了。
尝试直接进普通模式,如果可以正常进入则说明安装的挺好。如果进去黑屏了,也不用慌,还可以试试从 recovery 模式进去。遇到红色界面,按 enter ,看看能不能行。若是还不行,只能卸载内核,重新装了……
3.4 验证内核
进入安装的实时内核后,使用 uname -r 检查一下内核版本是否正确 若安装正确,在 /sys/kernel/realtime 文件里有一个 1 。
3.5 添加实时组许可
sudo addgroup realtime
sudo usermod -a -G realtime $(whoami)
$(whoami) 可以改成自己的用户名,不改也可以,不影响
修改 /etc/security/limits.conf 将以下限制添加到实时组,
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
重启一下,配置过程就结束了。
4. 测试环境
配置得这么辛苦,还不是为了能让机械臂动起来,赶紧来测试一下吧!
在 libfranka/build/examples 路径下打开终端 运行
./communication_test 172.16.0.2
根据终端提示,按一下 enter 机械臂动了一下,跳出一串通讯信息,最后提示10000次姿态,丢了xx次,证明 libfranka 和 FCI 连上了 该路径下还有其他 build 好的例子,都可以尝试一下,指令结尾记得添加机械臂的 ip
试一试 franka_ros
roslaunch franka_example_controllers move_to_start.launch robot_ip:=172.16.0.2
会出现 RVIZ 界面,若报错,根据终端信息进行相应改错。 打开 RVIZ 界面,拖动 InteractiveMarkers ,机械臂立刻响应做出动作,终端不报错,环境搭建就没有太大问题。
终于配好环境,写好总结,长舒一口气,就看以后发挥了。
|