ホスト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起動して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の作成もホスト同様にできる。
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を解決する