本手册并不是一个完整的官方说明手册,而是一个经验使用手册;本手册的目的时让开发者快速的上手使用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的指示灯一定为蓝色








