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
リモートデスクトップ
[コントロールパネル]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
#!/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 件のコメント:
コメントを投稿