ROS 학습 42탄: ps4 컨트롤러로 거북이 조작
#프로그래밍 ROS<ps4 컨트롤러로 거북이 조작>
개시하다
ROS(Robot Operating System)를 더 파악하려는 목적이다.
컨디션
컴퓨터.
디바이스
raspberry pi 4 Model B
메모리
3.7 GiB
Graphics
V3D 4.2
OS
Ubuntu
Ubuntu
발포
20.4.2 LTE 64비트
내부 핵
Linux 5.4.0-1035-raspi aarch64
MATE
1.24.0
ROS
Distribution
noetic
컨트롤러
제조사
SONY
시리즈
DUALSHOCK4 Wireless Controller
게임 패드
조종 패드와 조종봉은 로봇을 원격으로 조작하는데 여기서 PS4의 컨트롤러를 사용해 모의 거북이를 이동시킨다.
환경 구조
필요한 패키지 설치
ds4drv
sudo pip install ds4drv
joy
sudo apt install ros-noetic-joy
준비됐습니다.
pyPS4Controller (option)
sudo pip install pyPS4Controller
참고 자료
연결 단계
① PC의 블루투스 기능이 켜져 있는지 확인
②ds4drv 시작
sudo ds4drv
③ PS4 컨트롤러 연결
PS 키와 SHARE 키를 모두 누르면 PS4 컨트롤러의 램프가 흰색으로 깜박입니다.
이로써 PS4 디렉터는 연결되었으나 입력 정보를 얻지 못했습니다.
PS4에 대한 입력 정보를 배포하려면
① 촛불로 주인 시동 걸기
roscore
② joy 노드 시작
rosrun joy joy_node
이로써/joy에 화제를 발표하겠습니다.rostopic echo /joy
를 통해 컨트롤러의 입력을 확인할 수 있습니다.
/joy 발표 테마와 ps4 단추의 대응
또한, axes와 관련해서는 13 이후 식별 버튼이 있어 6~12에 대해서는 잘 모릅니다. 따라서 다 설명할 수는 없습니다. 하지만 필요한 부분을 망라했다고 생각합니다.나는 터치스크린에 대해 알지 못한다. 터치패드가 대응할 수 있는 방법이 있을 텐데 찾지 못했다.
이루어지다
여기, ps4 컨트롤러를 사용하여 터틀sim을 이동하기 때문에 필요한 실행 파일은 다음과 같습니다.
개요
sudo pip install ds4drv
sudo apt install ros-noetic-joy
sudo pip install pyPS4Controller
sudo ds4drv
roscore
rosrun joy joy_node
이것을 참고로 해 나가다.
joy_to_twist
이번에는 왼쪽 조종대만 사용해서 거북이를 움직인다. 아주 간단한joyto_트위터 프로그램이 됐어.
joy_to_twist.py
#! /usr/bin/env python3
import rospy
from sensor_msgs.msg import Joy
from geometry_msgs.msg import Twist
def control(msg, twist_pub):#joy to twist
L_horizontal = msg.axes[0] #左ジョイスティック(左右)
L_vertical = msg.axes[1] #左ジョイスティック(上下)
circle = msg.buttons[13]
velocity = [L_horizontal*(1+circle), L_vertical*(1+circle)]
t = Twist() #Twistのインスタンスを生成
t.angular.z, t.linear.x = velocity #twistにjoyから取得したデータを当てはめる
twist_pub.publish(t) #twistを配信
if __name__ == '__main__':
#ノードの初期化
rospy.init_node('joy_to_twist')
#配信準備
twist_pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=1)
#購読
rospy.Subscriber('/joy', Joy, control, twist_pub)
rospy.spin()
launch 파일
실행할 프로그램이 준비되어 있기 때문에, launch 파일에 미리 집합합니다. 단, ds4drv는 포함되지 않습니다.
joy_lesson.launch
<launch>
<include file="$(find joy)/launch/ps4joy.launch"/>
<node name="turtle" pkg="turtlesim" type="turtlesim_node" output="screen"/>
<node name="joy_to_twist" pkg="joy_lesson" type="joy_to_twist.py" output="screen"/>
</launch>
실행하다roslaunch joy_lesson joy_lesson.launch
실제 연결 여부를 확인하다.rostopic info /turtlesim1/cmd_vel
확실히vel 입력 joy joyto_트위터로 확인 가능합니다.
실행
ps4 컨트롤러 연결
sudo ds4drv
USB 포트 액세스 허용sudo chmod 666 /dev/ttyUSB0
실행roslaunch joy_lesson joy_lesson.launch
이 모든 실행 상황을 동적 이미지로 표시해라.에서 보듯이 joy_to_twist.py
기본적으로 왼쪽 조종대로 조작하고 0을 누르면 거북이는 2배의 속도로 전진한다
감상
마침내 ROS에서 ps4 컨트롤러를 사용하는 방법을 이해했다. 과거 한 번 도전했지만 ROS 자체가 이해가 되지 않아 실패했다. 하지만 이번에는 완전히 이해했다. 이번에는 아날로그 거북이를 움직일 뿐, 최근에는실제 로봇을 돌릴 예정입니다.
참고 문헌
실용 로봇 개발을 위한 ROS 프로그래밍
서전건, 삼전현, 강전호지, 원상요,
나가사키 공준, 전향권, 담내양평, 대천일도,
재등공, 전중량도, 유전유태, 석전우태랑 공동 저
삼북출판주식회사 발행
Reference
이 문제에 관하여(ROS 학습 42탄: ps4 컨트롤러로 거북이 조작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yuya-Shimizu/items/4bed435e65cefc6d2df1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)