IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Franka Emika Panda 机械臂环境配置 -> 正文阅读

[人工智能]Franka Emika Panda 机械臂环境配置

实验室买来一台 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 文件中
# 1.安装依赖
sudo apt install build-essential cmake git libpoco-dev libeigen3-dev

# 2.选择位置下载保存 libfranka
cd ~/catkin_franka
git clone --recursive https://github.com/frankaemika/libfranka  //默认下载最新版本

# 3.编译安装
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

# 1.选择位置下载保存 franka_ros
cd ~/catkin_franka/src
git clone --recursive https://github.com/frankaemika/franka_ros  //默认下载最新版本

# 2.下载安装依赖
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y --skip-keys libfranka

# 3.编译安装
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内核。有时候甚至可能出现在某一版本内核下编译出错,换一个内核却可以的情况,但自己也是道听途书,没有亲身经历,不怕麻烦的可以试试。

# 1.新建一个文件夹用于存储内核的相关文件
mkdir ~/kernel && cd ~/kernel

# 2.下载kernel and patch
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

# 3.解压
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 编译内核

# 1.提取源代码并应用补丁
tar xf linux-4.14.12.tar
cd linux-4.14.12
patch -p1 < ../patch-4.14.12-rt10.patch

# 2.配置内核
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 ,机械臂立刻响应做出动作,终端不报错,环境搭建就没有太大问题。

终于配好环境,写好总结,长舒一口气,就看以后发挥了。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:31:26  更:2021-09-04 17:33:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/26 8:49:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码