Franka Emika Panda 開発環境構築 第2版


Franka Emika Panda 実験環境構築

概要

  • Windowsを設定
  • Ubuntuをインストール
  • PCのBIOSを設定
  • ROS Melodicをインストール
  • Franka Control Interfaceをインストール
  • リアルタイムカーネルを作成
  • リアルタイムカーネルをインストール
  • リアルタイムカーネルを起動
  • Ubuntuを設定
  • ロボットコントローラと通信して動作
  • 参考資料

参照
https://opensource-robotics.tokyo.jp/?p=4294
https://opensource-robotics.tokyo.jp/?p=4362

詳細

Windowsを設定

windowsに240GB,ubuntuに200GB,共用に40GBとする

  • Cドライブのボリュームの縮小
    240000MBをubuntu用のボリュームとする
  • 新しいシンプルボリューム
    200000MBを[ドライブD:フォーマットしない]で作成
    残りを[ドライブE:フォーマットしない]で作成

Ubuntuをインストール

Lenovo Yoga Slim 7 14ITL05の場合、EPSON Endeavor MR8300-M の場合、を記載

必要なファイルを収集
ubuntu-ja-18.04.3-desktop-amd64.iso https://www.ubuntulinux.jp/download/ja-remix
Rufus 3.14 https://rufus.ie/ja/

Lenovo Yoga - EPSON Endeavor共通

  • キーボードレイアウト
    [日本語]-[日本語] サフィックス無しの選択肢
  • アップデートと他のソフトウェア
    あらかじめどのアプリケーションをインストールしますか?
    [通常のインストール]
    その他のオプション
    [Ubuntuのインストール中にアップデートをダウンロードする]
  • インストールの種類
    コンピュータにはWindowsBootManagerがインストールされています。どのようにしますか?
    [それ以外]

Lenovo Yoga

  • [インストールの種類]=[それ以外]
    /dev/nvme0n1p4 ext4 / フォーマットする 209715MB
    /dev/nvme0n1p5 fat32 /windows フォーマットする 41943MB

EPSON Endeavor

  • [インストールの種類]=[それ以外]
    /dev/sda4 ext4 / フォーマットする 209715MB
    /dev/sda5 fat32 /windows フォーマットする 41943MB

PCのBIOSを設定

Lenovo Yoga

[Security]-[Secure Boot]=[Disabled]

EPSON Endeavor

[Main]-[Port Configuration]-[Configuration Port As]=[AHCI]
[Security]-[Secure Boot]=[Disabled]
[Boot]-[Boot Setting Configuration]-[UEFI Boot]=[Enabled]
[Boot]-[UEFI Hard Drive Priorities]-[Boot Option #1]=[ubuntu]

MOUSE

[Security]-[Secure Boot]=[Disabled]
[Boot]-[UEFI NVME Drive BBS Priorities]=[Boot option #1]=[ubuntu]

ROS Melodicをインストール

以下の手順でインストール
http://wiki.ros.org/melodic/Installation/Ubuntu
Desktop-Full Install: (Recommended) :これを選択

参照
https://robot.isc.chubu.ac.jp/?p=1447
http://joe.ash.jp/program/ros/setup/install_ros_melodic.htm
https://choreonoid.org/ja/manuals/latest/ros/install-ros.html

Franka Control Interfaceをインストール

$ sudo apt install ros-melodic-libfranka ros-melodic-franka-ros

参照
https://frankaemika.github.io/docs/installation_linux.html

リアルタイムカーネルを作成

以下の手順で5.4.19-rt10を作成
https://frankaemika.github.io/docs/installation_linux.html#setting-up-the-real-time-kernel
ポイントは以下

$ sudo apt-get install build-essential bc curl ca-certificates gnupg2 libssl-dev lsb-release libelf-dev bison flex
$ curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.4.19.tar.xz
$ curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.4.19.tar.sign
$ curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.4/older/patch-5.4.19-rt10.patch.xz
$ curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.4/older/patch-5.4.19-rt10.patch.sign
$ xz -d *.xz
$ tar xf linux-*.tar
$ cd linux-*/
$ patch -p1 < ../patch-*.patch
$ cp -v /boot/config-$(uname -r) .config
$ make olddefconfig
$ make menuconfig
General Setup > Preemption Model で「Fully Preemptible Kernel (Real-Time)」を選択
Cryptographic API > Certificates for signature checking > Provide system-wide ring of trusted keys > Additional X.509 keys for default system keyring で「空欄」を設定
$ make -j$(nproc) deb-pkg
$ sudo dpkg -i ../linux-headers-*.deb ../linux-image-*.deb

リアルタイムカーネルを起動

カーネルロードでエラーの場合

Linux 4.14.12-rt10 をロード中...
エラー:/boot/vmlinuz-4.14.12-rt10 has invalid signature
初期 RAM ディスクをロード中...
エラー:まずカーネルをロードする必要があります。
続けるには何かキーを押してください...

PCのBIOSを変更して対応

[Security]-[SecureBoot] [Enable]から[Disable]に

リアルタイムカーネルの起動を確認

$ uname -a
Linux frankaepson1 5.4.19-rt10 #1 SMP PREEMPT_RT Mon Nov 1 18:08:49 JST 2021 x86_64 x86_64 x86_64 GNU/Linux

Ubuntuを設定

グループ名とユーザー名を登録

$ sudo addgroup franka_grp
グループ 'franka_grp' (GID 1001) を追加しています...
完了。
$ sudo usermod -a -G franka_grp $(whoami)
$ sudo vi /etc/security/limits.conf
@franka_grp soft rtprio 99
@franka_grp soft priority 99
@franka_grp soft memlock 102400
@franka_grp hard rtprio 99
@franka_grp hard priority 99
@franka_grp hard memlock 102400
$ grep $(whoami) /etc/passwd
frankanote:x:1000:1000:frankanote,,,:/home/frankanote:/bin/bash
$ grep $(whoami) /etc/group
adm:x:4:syslog,frankanote
cdrom:x:24:frankanote
sudo:x:27:frankanote
dip:x:30:frankanote
plugdev:x:46:frankanote
lpadmin:x:116:frankanote
frankanote:x:1000:
sambashare:x:126:frankanote
franka_grp:x:1001:frankanote

ロボットコントローラと通信して動作

通信性能を確認

$ sudo ping 172.16.0.2 -i 0.001 -D -c 10000 -s 1200

[1631854233.491256] 1208 bytes from 172.16.0.2: icmp_seq=9997 ttl=64 time=0.130 ms
[1631854233.492258] 1208 bytes from 172.16.0.2: icmp_seq=9998 ttl=64 time=0.128 ms
[1631854233.493251] 1208 bytes from 172.16.0.2: icmp_seq=9999 ttl=64 time=0.128 ms
[1631854233.494248] 1208 bytes from 172.16.0.2: icmp_seq=10000 ttl=64 time=0.126 ms

--- 172.16.0.2 ping statistics ---
10000 packets transmitted, 10000 received, 0% packet loss, time 9999ms
rtt min/avg/max/mdev = 0.083/0.133/0.527/0.016 ms
$ sudo ping 172.16.0.2 -i 0.001 -D -c 10000 -s 1200 | grep rtt
rtt min/avg/max/mdev = 0.078/0.133/0.201/0.012 ms
$ sudo ping 172.16.0.2 -i 0.001 -D -c 10000 -s 1200 | grep rtt
rtt min/avg/max/mdev = 0.092/0.133/0.290/0.010 ms
$ sudo ping 172.16.0.2 -i 0.001 -D -c 10000 -s 1200 | grep rtt
rtt min/avg/max/mdev = 0.091/0.133/0.210/0.015 ms

参考資料

franka

全体構成図
https://world.franka.de/resources/img/systemoverview.f74fb8f1.png
FCI全般 Linuxインストール libfranka franka_ros
https://frankaemika.github.io/docs/index.html
その中のlibfranka
https://frankaemika.github.io/docs/libfranka.html
libfrankaクラス仕様
https://frankaemika.github.io/libfranka
frankaリポジトリ
franka_ros libfranka docs icra18-fci-tutorial the_reference_platform external_gripper_example
https://github.com/frankaemika

ros.org

franka_hwクラス仕様
http://docs.ros.org/en/melodic/api/franka_hw/html/
MoveItチュートリアル
http://docs.ros.org/en/melodic/api/moveit_tutorials/html/index.html

Frankaメモ

操作あれこれ
https://qiita.com/carpenders/items/b8909442b71b2ce48761
libfrankaネットワーク性能不足
https://qiita.com/carpenders/items/78338a6a5c9bdda06372
libfranka実行性能
https://qiita.com/carpenders/items/dd2d27804e3e0b385501
ローカルでexamplesをビルド・CMakeLists.txt的
https://qiita.com/carpenders/items/e000e011a6aa5164b3a8
ローカルでexamplesをビルド・Makefile的
https://qiita.com/carpenders/items/a35dc63f88d8774f2cc4
ネットのアプリケーション実装
https://qiita.com/carpenders/items/f930e0d31bea7ffe2161
nut
https://qiita.com/carpenders/items/90bbc992cad570aa7a14

Ubuntuメモ

Windows10 Ubuntu DualBoot
https://qiita.com/carpenders/items/966e9e1c5780377e4590
Ubuntu使用準備
https://qiita.com/carpenders/items/69dd6b37a29dd36547ca

ネット情報

C++ラムダ式解説
https://cpprefjp.github.io/lang/cpp11/lambda_expressions.html
https://qiita.com/YukiMiyatake/items/8d10bca26246f4f7a9c8
https://kaworu.jpn.org/cpp/%E3%83%A9%E3%83%A0%E3%83%80%E5%BC%8F
ROSの歴史
http://lab3.kuis.kyoto-u.ac.jp/~takase/ros/1intro.pdf