アプリとサービスのすすめ

アプリやIT系のサービスを中心に書いていきます。たまに副業やビジネス関係の情報なども気ままにつづります

PCからJetson NanoをROSで遠隔操作とsshログインするまで

ホストPCから大体ハードウェアのJetson NanoをROSの遠隔操作とsshでログインまでの備忘録

目次
1 Jetson Nanoのセットアップ
2.Jetson NanoにROSのinstall
3.パッケージ等の作成
4.ホストPCからJetson NanoをROSで遠隔操作
5. ホストPCからJetsonへsshでログイン

1 Jetson Nanoのセットアップ

まず以前の記事と同じようにJetsonのセットアップから。

今回は動作確認が取れてるJetPack==4.3のMicro SDカードに焼いた。

https://trafalbad.hatenadiary.jp/entry/2021/08/05/220814trafalbad.hatenadiary.jp


# SDカードは/dev/disk4パーティションの容量確保
$ sudo diskutil partitionDisk /dev/disk4 1 GPT "Free Space" "%noformat%" 100% 
>>>>
### Started partitioning on disk4
### Unmounting disk
### Creating the partition map
### Waiting for partitions to activate
### Finished partitioning on disk4

Etcherで書き込み。



2.Jetson NanoにROSのinstall

Jetson Nano(JetPack:4.3)環境
ubuntu 18.04.5 LTS
CMake 3.10.2
Python 3.6.9
Opencv 4.1.1


Jetsonにopencvシンボリックリンク作成

Jetson起動してubuntuをinstallする設定をした後、18.04なのでMerodicをinstall

まず「Software」から「Firefox ウェブブラウザ」をinstall。

# Jetson起動してupdate
sudo apt update
sudo apt upgrade
# 必要パッケージのinstall
sudo apt install wget curl git vim tree

# python2 に変換
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

JetPack==4.3ではopencvがinstall済みだけどパスが違うので、シンボリックリンクを作る

sudo ln -s /usr/include/opencv4/ /usr/include/opencv

ROSのインストール

# ROSのinstall
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

# public keyの登録
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

# rosと関連パッケージのinstall
sudo apt update
sudo apt install ros-melodic-desktop-full
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc 
source ~/.bashrc
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo rosdep init
rosdep update

# ワークスペースの作成と登録
mkdir -p catkin_ws/src && cd catkin_ws # (pwd==/home/user/catkin_ws)
catkin_make 
echo "source /home/user/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

# working spaceの登録
#cd ~/catkin_ws/src
#catkin_init_workspace
#cd ~/catkin_ws
#catkin_make
#source ~/.bashrc


# パッケージの作成
cd ~/catkin_ws/src
catkin_create_pkg ros_start rospy roscpp std_msgs
cd ~/catkin_ws
catkin_make
# 作成できてるかcheck
roscd ros_start
#### => ~/catkin_ws/src/ros_start に移動できればOK
# 再起動
sudo reboot


3.パッケージ等の作成

今まで通りにTopic通信や独自Serviceの作成もホスト同様にできる。

trafalbad.hatenadiary.jp

trafalbad.hatenadiary.jp


4. ホストPCからJetson NanoをROSで遠隔操作

# ホストPC側
$ hostname -I | cut -d' ' -f1
### 192.168.10.111

# Jetson Nano側
$ hostname -I | cut -d' ' -f1
### 192.168.10.102


環境変数の設定

# PC(ROS_MASTER)側に、ROS_MASTER/ROS_IPを設定
export ROS_MASTER_URI=http://192.168.10.111:11311  # ROS_MASTER側のアドレスを設定
export ROS_IP=192.168.10.111                      # 自分のIPアドレスを設定

# Jetson側、ROS_MASTER/ROS_IPを設定
export ROS_MASTER_URI=http://192.168.10.111:11311
export ROS_IP=192.168.10.102


roscore/turtlesim起動

# PC(ROS_MASTER)側、roscore/turtlesim_nodeを起動
roscore
rosrun turtlesim turtlesim_node

# Jetson側、turtle_teleop_keyを起動
rosrun turtlesim turtle_teleop_key

### Jetson側でturtleを操作できればOK

ホストPCからJetsonをROSで操作できた

5. ホストPCからJetsonへsshでログイン

ホストPC側で操作

$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096  # 秘密鍵/公開鍵ペア生成(鍵の名前を"jetson"にしておく)
$ mv id_rsa jetson && mv id_rsa.pub jetson.pub
# ~/.ssh/configファイルの作成
Host 任意の名称(接続時に使用)
    Hostname 接続先のIPアドレス/ドメイン名
    User ユーザ名
    Port ポート番号
    Identityfile 鍵ファイルのパス
    ServerAliveInterval 秒(自動切断防止設定。後述)

# example
Host jetson
    Hostname 192.168.10.102
    User jetson
    Port 22
    Identityfile ~/.ssh/jetson
    ServerAliveInterval 60

これでホストPCから、jetsonにでリモートログインできた。

ssh jetson 
Jetson pass>>>
>>>

loginできた。次はjetsonからrealsense-Laidarのデータ取得

参考

Jetson Nano/PC間でROS接続する
Getting Started with ROS on Jetson Nano
ROS noeticでImportError: No module named rospkgを解決する