0
0

Franka Emika Panda 開発環境構築

Last updated at Posted at 2021-09-21

原典
https://opensource-robotics.tokyo.jp/?p=4294
https://opensource-robotics.tokyo.jp/?p=4362

Windowsを設定

  • ubuntuに200GBを割り当てる
    ドライブCのボリュームの縮小、204800MBをubuntu用のボリュームとする
  • Win11でローカルアカウント作成の場合
ネットワークに接続しない状態で起動
「国または地域はこれでよろしいですか?」の画面で「Shift+F10」
C:\Windows\System32>cd oobe
C:\Windows\System32>bypassnro.cmd

PCのBIOSを設定

Lenovo Yoga

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

EPSON Endeavor

Main --------------------------------
Port Configuration
Configure Port As [AHCI]
Security --------------------------------
Hard Disk Protection [Disabled]
Secure Boot [Disabled]
Boot --------------------------------
Boot Setting Configuration ----------------
Screen Logo [Enabled]
Beep Sound [Disabled]
UEFI Boot [Enabled]
UEFI IPv4 PXE [Enabled]
UEFI IPv6 PXE [Enabled]
Boot Option Priority ----------------
Boot Option #1 [UEFI CD/DVD]
            #2 [UEFI Removable Device]
            #3 [UEFI USB Hard Drive]
            #4 [UEFI Hard Drive:ubuntu (P1:Micron_1300_MTFDDAK512TDL)]
            #5 [UEFI Network:UEFI:PXE IPv4 Intel(R) Ethernet Connection (11) I219-V]
            #6 [CD/DVD: HL-DT-ST DVDROM GHCON]
            #7 [Removable Device]
            #8 [USB Hard Drive]
            #9 [Hard Drive:Micron_1300_MTFDDAK512TDL]
            #10 [Network]
UEFI Hard Drive Priorities ----------------
Boot Option #1 [ubuntu (P1:Micron_1300_MTFDDAK512TDL)]
            #2 [Windows Boot Manager (P1:Micron_1300_MTFDDAK512TDL)]
UEFI Network Device BBS Priorities ----------------
Boot Option #1 [UEFI: PXE IPv4 Intel(R) Ethernet Connection (11) I219-V]
            #2 [UEFI: PXE IPv6 Intel(R) Ethernet Connection (11) I219-V]
CD/DVD ROM Drive Priorities ----------------
Boot Option #1 [P5: HL-DT-ST DVDROM GHCON]
Hard Drive Priorities ----------------
Boot Option #1 [P1: Micron_1300_MTFDDAK512TDL]

MOUSE Computer

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

DELL Vostro 3020 Small Desktop

Windowsの起動ディスクを作成しておく。後でWindowsをクリーンインストールする。

[Boot Configuration]-[Enable Secure Boot]=[OFF]
[Storage]-[SATA/NVMe Operation]=[AHCI/NVMe]

StorageをRAIDからAHCIにするとWindowsが起動できなくなるので、起動ディスクで再インストールする。

その他BIOS設定

link
https://qiita.com/carpenders/items/f86b783061a84a28a92a

ハードウェア構成

EPSON Endeavor

内蔵Ethernet Intel I219-V
https://www.intel.com/content/www/us/en/download/14611/15817/intel-network-adapter-driver-for-pcie-intel-gigabit-ethernet-network-connections-under-linux.html

ビルドとインストール

$ tar xf e1000e-3.8.4.tar.gz
$ cd e1000e-3.8.4/src/
$ vi nvm.c
s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
{
        return 0; /* この関数を無処理にする */
} 
$ sudo make install
$ sudo modprobe -r e1000e
$ sudo modprobe e1000e
$ dmesg | grep -i e1000
[  470.573246] e1000e: loading out-of-tree module taints kernel.
[  470.573502] e1000e: module verification failed: signature and/or required key missing - tainting kernel
[  470.577509] e1000e: Intel(R) PRO/1000 Network Driver - 3.8.4-NAPI
[  470.577510] e1000e: Copyright(c) 1999 - 2020 Intel Corporation.
[  470.577996] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[  471.023527] e1000e 0000:00:1f.6 0000:00:1f.6 (uninitialized): registered PHC clock
[  471.114089] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) d8:97:ba:39:15:e2
[  471.114091] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection
[  471.114280] e1000e 0000:00:1f.6 eth0: MAC: 13, PHY: 12, PBA No: FFFFFF-0FF
[  471.117633] e1000e 0000:00:1f.6 eno1: renamed from eth0
[  556.332827] e1000e 0000:00:1f.6 eno1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
$ sudo ping 172.16.0.2 -i 0.001 -D -c 10000 -s 1200 | grep rtt
rtt min/avg/max/mdev = 0.099/0.131/0.219/0.015 ms

DELL Vostro 3020 Small Desktop

内蔵Ethernet RTL8111KD

$ dmesg | grep eth[0-9]
[    2.681181] r8169 0000:02:00.0 eth0: RTL8168h/8111h, cc:96:e5:42:8d:f4, XID 541, IRQ 137
[    2.681183] r8169 0000:02:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[    2.681774] r8169 0000:02:00.0 enp2s0: renamed from eth0
$ lspci
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 1b)

内蔵WLAN PCIe Realtek 8821CE

sudo apt -y install dkms
git clone https://github.com/tomaspinho/rtl8821ce.git
cd rtl8821ce
インストール
sudo ./install-driver.sh
ドライバ削除
sudo ./remove-driver.sh
$ dmesg | grep 8821
[    5.747323] 8821ce: loading out-of-tree module taints kernel.
[    5.747841] 8821ce: module verification failed: signature and/or required key missing - tainting kernel
[    5.810238] rtl8821ce 0000:03:00.0: enabling device (0000 -> 0003)
[    6.691129] rtl8821ce 0000:03:00.0 wlp3s0: renamed from wlan0
$ lspci
03:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter

PCIe拡張カード

TP-LINK TG-3468 RTL8168

$ dmesg|grep eth[0-9]
[    2.681268] r8169 0000:01:00.0 eth0: RTL8168h/8111h, 6c:5a:b0:5a:9e:a3, XID 541, IRQ 128
[    2.681270] r8169 0000:01:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[    2.737331] r8169 0000:01:00.0 enp1s0: renamed from eth0
$ lspci
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8161 (rev 15)

TOPTEK Intel82576

$ dmesg | grep eth[0-9]
[    2.882133] igb 0000:01:00.0: added PHC on eth0
[    2.882135] igb 0000:01:00.0: eth0: (PCIe:2.5Gb/s:Width x1) 1c:fd:08:7c:63:fc
[    2.882138] igb 0000:01:00.0: eth0: PBA No: Unknown
[    3.138194] igb 0000:01:00.1: added PHC on eth1
[    3.138195] igb 0000:01:00.1: eth1: (PCIe:2.5Gb/s:Width x1) 1c:fd:08:7c:63:fd
[    3.138205] igb 0000:01:00.1: eth1: PBA No: Unknown
[    3.139880] igb 0000:01:00.1 enp1s0f1: renamed from eth1
[    3.168087] igb 0000:01:00.0 enp1s0f0: renamed from eth0
$ lspci
01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

USB-WLAN

TP-LINK AC600 Archer T2U Plus
ラズベリーパイの場合はインストールの前にREADME.mdを読み「For Raspberry (RPI)」の項目に対応する

sudo apt -y install dkms
git clone https://github.com/aircrack-ng/rtl8812au.git
cd rtl8812au
インストール
sudo make dkms_install
ドライバ削除
sudo make dkms_remove
[  277.392532] usb 1-1: new high-speed USB device number 6 using xhci_hcd
[  277.413864] usb 1-1: New USB device found, idVendor=2357, idProduct=0120, bcdDevice= 2.00
[  277.413871] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  277.413873] usb 1-1: Product: 802.11ac WLAN Adapter
[  277.413876] usb 1-1: Manufacturer: Realtek
[  277.413877] usb 1-1: SerialNumber: 00e04c000001
[  277.884240] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[  277.885797] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[  277.900780] 88XXau: loading out-of-tree module taints kernel.
[  277.901231] 88XXau: module verification failed: signature and/or required key missing - tainting kernel
[  277.967845] usb 1-1: 88XXau 78:8c:b5:f7:3f:1a hw_info[107]
[  277.969690] usbcore: registered new interface driver rtl88XXau
[  278.000958] rtl88XXau 1-1:1.0 wlx788cb5f73f1a: renamed from wlan0
[  278.353419] IPv6: ADDRCONF(NETDEV_CHANGE): wlx788cb5f73f1a: link becomes ready
[  281.964070] IPv6: ADDRCONF(NETDEV_CHANGE): wlx788cb5f73f1a: link becomes ready

TP-LINK AC1300 Archer T3U Plus

sudo apt -y install dkms
git clone https://github.com/morrownr/88x2bu-20210702.git
cd 88x2bu-20210702
インストール
sudo ./install-driver.sh
ドライバ削除
sudo ./remove-driver.sh
[  371.241337] usb 1-1: new high-speed USB device number 7 using xhci_hcd
[  371.262524] usb 1-1: New USB device found, idVendor=2357, idProduct=0138, bcdDevice= 2.10
[  371.262530] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  371.262533] usb 1-1: Product: 802.11ac NIC
[  371.262535] usb 1-1: Manufacturer: Realtek
[  371.262537] usb 1-1: SerialNumber: 123456
[  371.968815] usbcore: registered new interface driver rtl88x2bu
[  371.991344] rtl88x2bu 1-1:1.0 wlxf0a7318d2eca: renamed from wlan0
[  372.697255] IPv6: ADDRCONF(NETDEV_CHANGE): wlxf0a7318d2eca: link becomes ready
[  377.495440] IPv6: ADDRCONF(NETDEV_CHANGE): wlxf0a7318d2eca: link becomes ready

Ubuntuをインストール

必要なファイルを収集
en https://ftp.kddilabs.jp/Linux/packages/ubuntu/releases-cd/
ja https://ftp.kddilabs.jp/Linux/packages/ubuntu-jp/release-cd/releases/
Rufus 3.14 https://rufus.ie/ja/

Ubuntuインストーラで画面が切れたら

ALT + F7
https://qiita.com/baggio/items/06e4132e5e0693c4b7ce

PC共通

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

Lenovo Yoga

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

EPSON Endeavor

  • [インストールの種類]=[それ以外]
    /dev/sda4 ext4 / フォーマットする 209715MB
  • ホスト名命名規則
    frankaepson1,frankaepson2,...

Ubuntuを設定

Ubuntuコマンドインストール

sudo apt update
sudo apt -y upgrade
sudo apt -y install vim openssh-server
# LD_LIBRARY_PATHにros-melodic,ros-noetic用ライブラリを追加するために
$ sudo vi /etc/ld.so.conf # 以下を追加
/opt/ros/melodic/lib
/opt/ros/noetic/lib/x86_64-linux-gnu
$ sudo ldconfig

他のコマンド
https://qiita.com/carpenders/items/69dd6b37a29dd36547ca

Ubuntuを削除

link
https://qiita.com/carpenders/items/966e9e1c5780377e4590

Hyper-V WSL2

link
https://qiita.com/carpenders/items/b4af879718946d7dd102

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

手順は以下
https://frankaemika.github.io/docs/installation_linux.html#setting-up-the-real-time-kernel

sudo apt-get -y install build-essential bc curl ca-certificates gnupg2 libssl-dev
sudo apt-get -y install lsb-release libelf-dev bison flex dwarves zstd libncurses-dev

# For Ubuntu 18.04 tested with the kernel version 5.4.19:
# ubuntu-ja-18.04.3-desktop-amd64.iso : 5.4.0-150-generic
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/projects/rt/5.4/older/patch-5.4.19-rt10.patch.xz
# For Ubuntu 20.04 tested with the kernel version 5.9.1:
# ubuntu-ja-20.04.1-desktop-amd64.iso : 5.4.0-42-generic 5.15.0-89-generic
curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.9/patch-5.9.1-rt20.patch.xz
# 22.04以降は公式には未対応の様子
# ubuntu-ja-22.04-desktop-amd64.iso : 6.2.0-36-generic Minisforumで起動不可
# ubuntu-ja-22.04-desktop-amd64.iso : 5.15.0-25-generic Minisforumで起動可能
curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.15.2.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.15/older/patch-5.15.2-rt18.patch.xz

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 で「空欄」を設定
# 変更したらSAVEを忘れずに
make -j$(nproc) deb-pkg
sudo dpkg -i ../linux-headers-*.deb ../linux-image-*.deb

5.9.1-rt20の場合
「残念ながら、Ubuntu20.04で内部エラーが発生しました。」を表示

grubを設定

起動カーネル切り替え

$ grep Ubuntu /boot/grub/grub.cfg
$ sudo vi /etc/default/grub
GRUB_DEFAULT=0
$ sudo update-grub
$ sudo reboot

Ubuntu18.04の例

# 標準カーネル起動なら
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.15.0-213-generic"
# リアルタイムカーネル起動なら
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.4.19-rt10"

Ubuntu20.04の例

# 標準カーネル起動なら
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-89-generic"
# リアルタイムカーネル起動なら
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.9.1-rt20"

Windowsの例

GRUB_DEFAULT="Windows Boot Manager (on /dev/nvme0n1p1)"

起動コンソールメッセージを表示

GRUB_CMDLINE_LINUX_DEFAULT=""

前回起動したOS既定にする場合

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

link
https://blog.masu-mi.me/post/2020/12/05/switch-kernel-with-grub2/
https://qiita.com/saito_now/items/acacf3f5830fdfb90283
https://shinespark.hatenablog.com/entry/2020/03/30/090000

画面サイズ設定

$ sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
$ sudo update-grub
$ sudo reboot

1600x900の例

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1600x900"

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

Ubuntu18.04の例

$ 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

Ubuntu20.04の例

$ uname -a
Linux franka-dell1 5.9.1-rt20 #1 SMP PREEMPT_RT Fri Nov 24 17:01:39 JST 2023 x86_64 x86_64 x86_64 GNU/Linux

ROSバイナリをインストール

https://wiki.ros.org/Distributions
https://en.wikipedia.org/wiki/Ubuntu_version_history

Melodicの場合 Ubuntu18.04 (Bionic)

http://wiki.ros.org/melodic/Installation/Ubuntu
Desktop-Full Install: (Recommended) これを選択

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt -y install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
sudo apt -y install ros-melodic-desktop-full
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt -y install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo rosdep init
rosdep update

Noeticの場合 Ubuntu 20.04 (Focal)

https://wiki.ros.org/noetic/Installation/Ubuntu
Desktop-Full Install: (Recommended) これを選択

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt -y install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
sudo apt -y install ros-noetic-desktop-full
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt -y install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
sudo rosdep init
rosdep update

参照
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をインストール

原典
https://frankaemika.github.io/docs/installation_linux.html
Melodicの場合

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

Noeticの場合

sudo apt -y install ros-noetic-libfranka ros-noetic-franka-ros

libfrankaをソースファイルからビルドする場合

sudo apt -y install git gcc g++ make
sudo apt -y install build-essential cmake git libpoco-dev libeigen3-dev
git clone --recursive https://github.com/frankaemika/libfranka
cd libfranka
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF ..
cmake --build .

グループ名を設定

$ 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

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

通信性能を確認

$ 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

参考資料

Ubuntuメモ

Ubuntu SoftEtherVPNクライアント
https://qiita.com/carpenders/items/fb572c908e83cf1004b0

franka link

全体構成図
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 link

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調査

Franka 操作あれこれ
https://qiita.com/carpenders/items/b8909442b71b2ce48761
Franka libfrankaネットワーク性能不足
https://qiita.com/carpenders/items/78338a6a5c9bdda06372
Franka libfranka実行性能
https://qiita.com/carpenders/items/dd2d27804e3e0b385501
Franka ネットにあるアプリケーション実装
https://qiita.com/carpenders/items/f930e0d31bea7ffe2161

Franka自作実装

Franka ローカルでexamplesをビルド・CMakeLists.txt的
https://qiita.com/carpenders/items/e000e011a6aa5164b3a8
Franka ローカルでexamplesをビルド・Makefile的
https://qiita.com/carpenders/items/a35dc63f88d8774f2cc4
Franka 動作性能測定
https://qiita.com/carpenders/items/90bbc992cad570aa7a14
Franka 制御プロトコル
https://qiita.com/carpenders/items/fa554349ebd6540d71d0
Franka BilateralController.exe
https://qiita.com/carpenders/items/6e9d7d54630d484c7cac

ネット情報

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
Linux Thread
https://www.tenkaiken.com/short-articles/linux%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89-pthread/
https://docs.oracle.com/cd/E19253-01/819-0390/tlib-12926/index.html
https://region-sys.com/c-4/#t2
https://ja.linux-console.net/?p=12393
http://onishi-lab.jp/programming/thread_linux.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0