JetbotをROSで動作させる
#目的
JetbotをROS環境でシミュレーション動作できるようにして、ROSによるシミュレーション環境構築の理解を深める。
#環境
- Jetbot: Waveshare
- Jetson nano
- Jetpack 4.4
- Ubuntu 18.04
#手順
インストール作業
モータードライバ(TB6612/PCA9685)と有機LED(SSD1306)のために、Adafruitのライブラリをインストール。
sudo apt-get install python-pip
pip install Adafruit-MotorHAT
pip install Adafruit-SSD1306
Workspaceを作成。
mkdir -p ~/workspace/jetbot_ws/src
cd ~/workspace/jetbot_ws
catkin_make
sudo sh -c 'echo "source ~/workspace/jetbot_ws/devel/setup.bash" >> ~/.bashrc'
jetson-inferenceをリポジトリからクローンしてビルド。
sudo apt-get install git cmake
cd ~/workspace
git clone https://github.com/dusty-nv/jetson-inference
cd jetson-inference
git submodule update --init
mkdir build
cd build
cmake ../
make
sudo make install
ros_deep_learningをリポジトリからクローンしてビルド。rospackの確認でPackage not foundのエラーが出たけど、setup.bashを実行したら解決。
sudo apt-get install ros-melodic-vision-msgs ros-melodic-image-transport ros-melodic-image-publisher
cd ~/workspace/jetbot_ws/src
git clone https://github.com/dusty-nv/ros_deep_learning
cd ../
catkin_make
# confirm that the package can be found
$ rospack find ros_deep_learning
/home/nvidia/workspace/jetbot_ws/src/ros_deep_learning
次にjetbot_rosをリポジトリからクローンしてビルド。同じくrospackで確認。
# clone the repo
$ cd ~/workspace/jetbot_ws/src
$ git clone --branch https://github.com/dusty-nv/jetbot_ros
# build the package
$ cd ../ # cd ~/workspace/catkin_ws
$ catkin_make
# confirm that jetbot_ros package can be found
$ rospack find jetbot_ros
/home/nvidia/workspace/catkin_ws/src/jetbot_ros
動作確認
いよいよROSでのJetbotの動作確認。
$ roscore
別のTerminalを開いて、jetbot_motorsでモーターを動かしてみる。サンプルコードのjetbot_motors.pyが入っているので、下記コマンドで実行。
$ rosrun jetbot_ros jetbot_motors.py
新しいTerminalを開いて、下記のコマンドをテストで実行すると、勢いよくモーターが動き出した! 結構早く走り出すので慌ててjetbotを持ち上げて、stopコマンドで止める。。。
$ rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "forward"
$ rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "backward"
$ rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "left"
$ rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "right"
$ rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "stop"
ROSはノード間の通信をトピックで非同期でやり取りする。
- rostopic pubはトピック送信する際のコマンド
- jetbot_motorsは以下の3つのトピックを受信できるが、今のところ実装されているのはcmd_strのみ。
- /jetbot_motors/cmd_dir:相対方位 (角度[-180.0, 180.0], スピード[-1.0, 1.0])
- /jetbot_motors/cmd_raw:生の左右のモーターへのコマンド(スピード[-1.0, 1.0], スピード[-1.0, 1.0])
- /jetbot_motors/cmd_str:シンプルなコマンド(left/right/forward/backward/stop)
OLEDの確認
JetbotにOLEDが付いているので表示させてみる。Jetbot_oledノードを実行。そして、以下のコマンドで"My Jetbot!"と表示。問題なく表示できた。
$ rosrun jetbot_ros jetbot_oled.py
$ rostopic pub /jetbot_oled/user_text std_msgs/String --once "My Jetbot!"
カメラ動作
Jetbotについているカメラで表示させてみる。まず、jetbot_cameraノードを起動。
$ rosrun jetbot_ros jetbot_camera
カメラ表示にはros-melodic-image-viewをインストールしておく必要があるらしい。以下のコマンドを新しいTerminalで実行。カメラ用の新しいWindowが立ち上がって、カメラも表示。 VNC接続からか、かなり遅い。
$ sudo apt-get install ros-melodic-image-view
$ rosrun image_view image_view image:=/jetbot_camera/raw
#参考
以下のgithubを参考に構築。
https://github.com/dusty-nv/jetbot_ros/tree/melodic
Author And Source
この問題について(JetbotをROSで動作させる), 我々は、より多くの情報をここで見つけました https://qiita.com/taniou/items/4487ab1a7b3959b2a589著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .