2024年4月1日月曜日

Raspberry Pi ロボットカー ROS(Robot Operating System)

2019年にROS(Robot Operating System)によるRaspberry Pi ロボットカーをワイヤレスゲームパッドから操作しました。
ROSはUbuntu上で動作していますバージョンは下記になります。
Ubuntu 16.04.6 
ROS  1.12.14

同ブログ関連記事:【Raspberry Pi ロボットカー回路図





動画

参考サイト
●Raspberry Pi 4 を使ったROS入門 第一回から第六回
●ROSの基本的な開発 on Python



リモートデスクトップ
[コントロールパネル]
[システムとセキュリティ]
[Windows ツール]
[リモートデスクトップ接続]
[IPアドレス]
[接続]








[はい]
Ubuntu
ユーザー名:
パスワード:










WindowsからRaspberry Piのubuntu MATE 画面操作ができます。

Windows ⇔ ubuntuのコピー&ペーストは出来ません。
USBメモリでデータのやり取りを行っています。






操作用ゲームパッド
Logicool(ロジクール)
ワイヤレスゲームパッド F710
(技適製品)










ワークスペースを作成
■catkin_ws
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws
$ catkin_make
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

ros_ws
$ mkdir -p ros_ws/src
$ cd ros_ws
$ source /opt/ros/indigo/setup.bash
$ catkin_make

/home/user









ROS実行
各ターミナル起動( Ctrl+Alt+T)&コマンド実行

■roscore


■rosrun joy joy_node


■rostopic echo /joy



■rosrun car_py car_motor_ros.py





ノード(python)について
/home/user/ros_ws/src/car_py








ビルド
$ cd ~/ros_ws/
$ catkin_make


car_motor_ros.py コード
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
from sensor_msgs.msg import Joy
from geometry_msgs.msg import Twist
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM) 
GPIO.setup(5, GPIO.OUT)      #AIN1
GPIO.setup(6, GPIO.OUT)      #BIN1
GPIO.setup(12, GPIO.OUT)   #AIN2
GPIO.setup(13, GPIO.OUT)   #BIN2
 
def joy_led(joy_msg):
    
 if joy_msg.buttons[0] == 1:
  GPIO.output(5,True)
  GPIO.output(6,True)
  GPIO.output(12,False)
  GPIO.output(13,False)
 elif joy_msg.buttons[2] == 1:
  GPIO.output(5,False)
  GPIO.output(6,False)
  GPIO.output(12,True)
  GPIO.output(13,True) 

 elif joy_msg.buttons[3] == 1:
  GPIO.output(5,True)
  GPIO.output(6,False)
  GPIO.output(12,False)
  GPIO.output(13,True)
  
 elif joy_msg.buttons[1] == 1:
  GPIO.output(5,False)
  GPIO.output(6,True)
  GPIO.output(12,True)
  GPIO.output(13,False)

 else:
  GPIO.output(5,False)
  GPIO.output(6,False)
  GPIO.output(12,False)
  GPIO.output(13,False)

rospy.init_node('car_motor_ros')
sub = rospy.Subscriber('joy', Joy, joy_led, queue_size=1)
rospy.spin()


0 件のコメント:

コメントを投稿

Raspberry Pi Donkey Car スマートカー

  2020年に製作したDonkey Car スマートカー について記事にしました。 Donkey CarはRaspberry Pi のカメラからコースを ディープラーニングさせ自動走行を行います。(動画は白線上を自動走行)   動画