本手册并不是一个完整的官方说明手册,而是一个
经验使用手册;
本手册的目的时让开发者
快速的上手使用franka_panda机械臂,并对相关的功能进行了一定的介绍;
本手册不会像官方的手册那样
非常严谨,主要的目的让大家快速的上手这款机械臂;
后续的细节请参照
官方的文档进行学习;
- 展示一:
- 展示二:
-
Franka_panda 机械臂一台
-
控制柜一台
-
夹持器一个
-
急停按钮
-
运动模式控制按钮
-
手柄控制器
-
其他配件
- 选购产品
- FCI控制插件 ===>
ros通讯插件;
-
官方的
App控制插件
===>使用官方的自己的运动控制插件;
- FCI控制插件 ===>
本产品的相关配置已经全部配置完成
不需要重置
- 黄色灯亮
- 锁定状态
- 蓝色灯亮
- 准备运动模式
- 粉红色灯亮
- 报警,不会急停
- 红色灯亮
- 急停
- 白色灯亮
- 没有使能
- Franka_panda
控制柜IP(
静态ip)
- 172.16.0.2
- 主控机的IP
(静态ip)
- 172.16.0.1
- 注意
:
在
服务模式下,地址为
自动获取的
IP,不是
静态IP;
- 官方网站
- 官方教程
- libfranka 下载地址:
- libfranka API手册
- frank_panda ROS通讯接口
- panda_ros wiki教程
- 相关工具准备
-
一台
Franka Panda机器人;
-
装有
Linux的电脑一台;
-
一根质量较好,较长的
网线;
-
- 基础知识
- 机器人学
的相关知识
; - C++编程;
- Linux操作系统
的相关知识
; - ROS系统
的相关知识
;
- 机器人学
- linux 系统版本
- Ubuntu 16.04 (Xenial Xerus)
- ROS 版本
- rosdistro: kinetic
- rosversion: 1.12.14
机器人使用
注意事项:由于panda机械内部的机械结构构造,在使用时候注意以下几点:
panda机械臂使用时,请将机械臂的
底部固定牢固。如果,底部固定的不够牢固,可能导致机械臂发生急停;
使用此机械臂时,应避免
关节扭矩过失;规划机械臂的运动轨迹时,尽量避免
关节扭矩过失的
运动规划;
- 急停的处理:
按下急停之后,请立即
关闭控制柜的电源;
此时,打开开关
不能启动机械臂为正常现象。请关闭电源,
等待1~2分钟后重启;
将机器人组装完成之后,先使用
Franka_panda机器人自带的
Desk界面测试机器人的相关功能是否正常;使用Desk界面的步骤如下:
首先,用
以太网线连接自己的电脑和机器人。
- 注意:
- Franka机器人
有两个
以太网口,一个在机器人
底座上,一个在
控制柜上。二者是不同的,但是都可以使用。
- Franka机器人
两个端口的
区别:如果连接到
机器人底座,此时机器人是
server模式,可以通过
robot.franka.de访问desk。
如果连接到
控制柜,此时机器人是
client模式,只能通过ip地址访问desk。
- 备注:
如果机器人使用
franka自带的
app,连接时;
可以同时使用两种模式,
server模式和
client模式;
如果使用
ROS进行控制时:
只能使用
client模式;
- Desk
的用法十分简单,本手册不做介绍。
-
此手册提供的软件安装的系统为
Linux操作系统,
Franka-panda机械臂进行编程控制时,一般有两种模式,即使用
ROS或者直接调用
API。本教程提供的两种方式进行控制;
-
安装ROS
安装教程点击这里,
👉 教程- 😏 😏 😏
-
libfranka
源码安装编译
安装最新版本的
libfranka,必须采用
源码编译,首先,删除之前安装的
libfranka和
franka_ros以防冲突。
sudo apt remove "*libfranka*"
删除完成后,首先安装依赖库:
sudo apt install build-essential cmake git libpoco-dev libeigen3-dev
首先将
Source code文件夹里面的
libfranka取出来放到
home文件夹下面
具体的编译源码的指令如下:
# 创建源码构建空间 mkdir build # 进入到源码构建的空间 cd build # 构建源码 cmake -DCMAKE_BUILD_TYPE=Release .. # 编译源码 cmake --build .
-
编译、构建 franka_ros
通讯接口
功能包安装
此功能包不兼容源码编译,此步骤可以省略
sudo apt-get install ros-kinetic-franka-ros
-
构建工作空间
构建工作空间指南,点击这里
👉 工作空间构建操作如下:
mkdir -p catkin_ws/src cd catkin_ws/src catkin_init_workspeace cd .. catkin_make
将提供的源码放到工作空间里面;
编译源码的步骤如下:
#进入到工作空间 catkin_make -DCMAKE_BUILD_TYPE=Release -DFranka_DIR:PATH=/path/to/libfranka/build # 刷星ros工作空间脚本 source devel/setup.sh
-
编译
real-time内核本节是以4.14.12内核为基础,不同的版本需要的内核不同,此处主要是演示内核的编译过程;
使用
Franka_panda机械臂时,需要
实时内核。这种方式和绝大多数使用
ROS控制的机械臂有很多的不同。
linux的
实时内核的构建方法有多种
。本教程使用的是
Franka_panda官方提供的
实时内核的编译方法:
查看当前系统的
Linux内核版本,终端输入:
uname -r
- 终端
会提示当前
Linux内核的版本,在
ubuntu16.04.6版本的系统在终端里面显示的内核版本为--->
4.15.0-generic。终端界面显示的版本不是
实时内核,需要自行安装编译
实时内核。选择
实时内核的版本没有什么推荐,原则上使用一个与自己版本最接近的内核就好。如果担心
内核奔溃,可以安装多个
内核并在
高级启动时自行切换。
内核的安装编译方法可参考
Franka FCI手册,但是该方法在网络连接不畅时极其慢,不推荐使用。
- 注意:
选择
实时内核版本时,不必选择与自带内核号一致的版本。也可以安装对应的其他的
generic内核。有时候甚至可能出现在某一版本内核下编译出错,换一个内核却可以的情况。
编译过程非常费时,完成后需要调整
默认的内核启动系统才能自行进入
实时内核。有些时候可能会
无法进入所选
内核,系统提示“
vmlinuz-… invalid signiture”,解决方案是在
BIOS里面关闭
Secure boot功能。
系统启动后别忘了用
uname -r或者
uname -a检查内核是否已经正确切换到
实时内核。
- 内核
是安装在系统的
boot分区下的,因此务必保证该分区空间充足,如何希望保存两个内核(
generic和
rt 内核)的话,建议
boot分区大于
4G,以便后续内核更新不会出现问题。
- 指令如下:
# 下载实时内核 && 相关的配置文件 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.xz
-
注意:
此处下载极慢,最好使用一些加密协议
-
解压
下载的相关文件
xz -d linux-4.14.12.tar.xz xz -d patch-4.14.12-rt10.patch.xz
对下载的
实时内核包进行
数据校验;
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
# 0x6092693E这个秘钥时根据gpg2 --verify linux-4.14.12.tar.sign得到的 gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 0x6092693E gpg2 --verify patch-4.14.12-rt10.patch.sign # 0x2872E4CC验证秘钥是根据gpg2 --verify patch-4.14.12-rt10.patch.sign得到的 gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 0x2872E4CC
上面的
步骤是为了校验实时内核的
完整性;
如果您对自己的网络比较自信可以忽略;
- 😂😂😂
- 解压源码包
,准备开始
编译源码包,指令如下:
#解压源码包 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)
当源码
构建完成之后,输入下面的
指令开始
编译内核;这个过程取决于自己电脑的
cpu的性能以及内核数目,后面
编译内核的参数可以根据自己电脑的情况进行修改;
fakeroot make -j4 deb-pkg
编译完成之后,输入下面的指令,
安装编译好的实时内核;
sudo dpkg -i ../linux-headers-4.14.12-rt10_*.deb ../linux-image-4.14.12-rt10_*.deb
输入下面的指令,调整
CPU的工作模式;
sudo addgroup realtime sudo usermod -a -G realtime $(whoami) sudo gedit /etc/security/limits.conf
向系统的
添加cpu相关的配置
@realtime soft rtprio 99 @realtime soft priority 99 @realtime soft memlock 102400 @realtime hard rtprio 99 @realtime hard priority 99 @realtime hard memlock 102400
-
禁用
CPU节能策略为了
安全性和
性能起见,建议配置完成后关闭系统的CPU频率调整功能。
首先安装工具
cpufrquentiles:
sudo apt install cpufrequtils
完成后,运行
cpufreq-info查看当前
CPU状态,当前“
governor”属性可能是“
powersave”模式,
修改为“
performance”模式。
cpufreq-info
修改方法有多种,可以采用
indicator-cpufreq工具在
UI界面手动修改。也可通过指令修改,运行如下指令:
sudo systemctl disable ondemand sudo systemctl enable cpufrequtils sudo sh -c 'echo "GOVERNOR=performance" > /etc/default/cpufrequtils' sudo systemctl daemon-reload && sudo systemctl restart cpufrequtils
-
首先,安装提供编译的源码;
-
API demo说明
-
communication_test
- 通信测试
;
使用方法
./examples/communication_test "172.16.0.2"
- 通信测试
-
cartesian_impedance_control
无惯性整形的简单
笛卡尔阻抗控制器;
使用方法
./examples/cartesian_impedance_control "172.16.0.2"
-
echo_robot_state
连续
读取机器人状态;
使用方法
./examples/echo_robot_state "172.16.0.2"
-
force_control
- PI力控制器
,可在
Z轴上绘制对应的重力;
使用方法
./examplesforce_control "172.16.0.2"
- PI力控制器
-
generate_cartesian_pose_motion
如何生成
笛卡尔运动;
使用方法
./examples/generate_cartesian_pose_motion "172.16.0.2"
-
generate_cartesian_velocity_motion
如何生成
笛卡尔速度运动;
使用方法
./examples/generate_cartesian_velocity_motion "172.16.0.2"
-
generate_consecutive_motions
错误恢复的
连续运动;
使用方法
./examples/generate_consecutive_motions "172.16.0.2"
-
generate_elbow_motion
移动机器人
肘部;
使用方法
./examples/generate_elbow_motion "172.16.0.2"
-
generate_joint_position_motion
如何产生
关节位置运动;
使用方法
./examples/generate_joint_position_motion "172.16.0.2"
-
generate_joint_velocity_motion
如何产生
关节速度运动;
使用方法
./examples/generate_joint_velocity_motion "172.16.0.2"
-
grasp_object
控制
FRANKA夹持器;
使用方法
./examples/grasp_object "172.16.0.2"
-
joint_impedance_contro
以形状执行
笛卡尔运动的
关节阻抗类型控件,
画圆;
使用方法
./examples/joint_impedance_contro "172.16.0.2"
-
joint_point_to_point_motion
命令
关节位置将机器人移动到
目标位置;
使用方法
./examples/joint_point_to_point_motion "172.16.0.2"
-
motion_with_control
使用
电机控制和
扭矩控制;使用方法
./examples/motion_with_control "172.16.0.2"
-
print_joint_poses
每个关节相对于
基础框架的
矩阵;
使用方法
./examples/print_joint_poses "172.16.0.2"
-
-
Frank_ros
启动
move_it运动规划
roslaunch panda_moveit_config panda_control_moveit_rviz.launch #不用添加机械臂的IP地址 #机械臂的IP地址已在launch文件中写好
等待所有的
规划组件启动完成之后,在
rviz里面拖动末端,进行机械臂的
运动规划;
使用时,
Franka_panda的指示灯一定为
蓝色