Ros

Konfiguracija ROS in uporaba brezžičnega krmilnika Xbox One

Ros Configuration Use Xbox One Wireless Controller



Okolje: Ubuntu16.04 + ROS kinetični

Namestite paket radosti

Paket joy ponuja gonilnik ROS za splošno igralno palico Linux. Vključuje vozlišče joy_node, ki omogoča igralni palici Linux interakcijo z ROS. To vozlišče objavi sporočilo 'Radost', ki vsebuje trenutno stanje vsakega gumba in osi krmilne palice.



Namestite ta paket veselja:



$ sudo apt-get install ros-kinetic-joy

Konfigurirajte brezžični krmilnik Xbox One

Po namestitvi najprej priključite krmilnik na računalnik s kablom USB in preizkusite, ali lahko Linux prepozna vaš igralni krmilnik pod žično povezavo.



$ ls /dev/input/

Videli boste seznam vseh vhodnih naprav. Če se prikaže jsX (v mojem računalniku je prikazan js0), to pomeni, da je Linux uspešno prepoznal vaš gamepad.

Moja fotografija

Preizkusite spodnji ročaj:



sudo jstest /dev/input/jsX

V terminalu boste videli izhodne informacije ročice, spremembe podatkov pa lahko vidite s premikanjem ročice.

Axes: 0: 1982 1: 894 2:-32767 3: 392 4: 438 5:-32767 6: 0 7: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off

Indeks, ki ustreza vsakemu gumbu in osi, najdete v http://wiki.ros.org/joy Ugotovljeno, seveda lahko tudi neposredno preizkusite.

Nato, če želimo, da vozlišče_v vozlišču ROS uporablja ročico, moramo spremeniti dovoljenja ročice.

$ ls -l /dev/input/jsX

Videli boste izhod, podoben temu:

crw-rw-XX-+ 1 root input 13, 0 9month 12 14:45 /dev/input/js0

Če je XX rw, je konfiguracija naprave uspešna.
Če je XX - ali drugače, to pomeni, da konfiguracija ni uspešna, morate:

$ sudo chmod a+rw /dev/input/jsX

Zaženite vozlišče joy_node

Če želite objaviti podatke krmilnika na ROS, moramo v paketu radosti zagnati vozlišče joy_node. Najprej moramo nastaviti parameter imena naprave na trenutno ime naprave, ki je privzeto js0.

$ roscore $ rosparam set joy_node/dev '/dev/input/jsX'

Nato lahko zaženete vozlišče joy_node:

$ rosrun joy joy_node

Izhod terminala je naslednji:

fotografija

Nato ga uporabite v novem terminalu rostopic echo Oglejte si podatke o temi veselja:

rostopic echo joy

Premaknite krmilnik, videli boste, da se podatki nenehno spreminjajo, kar kaže na uspešno konfiguracijo žičnega krmilnika.

fotografija

Brezžična povezava Bluetooth

Vklopite Bluetooth na Ubuntu 16.04 in poiščite povezavo Xbox Wireless Controller.

Bluetooth

Če Bluetooth pade takoj po povezavi, lahko poskusite naslednje:

  • V terminalu zaženite naslednji ukaz
sudo apt-get update sudo apt-get install build-essential linux-headers-generic
  • Prenesite to repo Zip datoteko, razpakirajte na namizje

  • Spremenite trenutni delovni imenik terminala v razpakiran imenik

  • V terminalu zaženite naslednji ukaz

make sudo make install sudo cp -r ~/Desktop/rtbth-dkms /usr/src/rtbth-3.9.3 sudo apt-get install dkms sudo dkms install rtbth/3.9.3 sudo nano /etc/modules
  • spremeni /etc/modules Datoteka, dodaj to vrstico
rtbth
  • Izhod, ponovni zagon

Preskušanje in umerjanje

jstest-gtk je orodje, ki lahko preizkusi ročaj, lahko pokaže, kateri gumb in os je pritisnjen, lahko kalibrira in ponovno nastavi indeks vsakega gumba za ročaj

  • Namestite jstest-gtk:
sudo apt-get install jstest-gtk
  • V terminal vnesite naslednji ukaz, da odprete GUI jstest-gtk:
$ jstest-gtk
  • Za preizkus kliknite gumb lastnosti

Krmilnik Xbox One brezžično nadzoruje želvo v želvi

Ustvarite paket v delovnem prostoru catkin

$ cd ~/catkin_ws/src $ catkin_create_pkg learning_joy roscpp turtlesim joy $ cd ~/catkin_ws/ $ catkin_make

Napišite vozlišče

Ustvari datoteko turtle_teleop_joy.cpp pod learning_joy / src /.

#include #include #include // create the TeleopTurtle class and define the joyCallback function that will take a joy msg class TeleopTurtle { public: TeleopTurtle() private: void joyCallback(const sensor_msgs::Joy::ConstPtr& joy) ros::NodeHandle nh_ int linear_, angular_ // used to define which axes of the joystick will control our turtle double l_scale_, a_scale_ ros::Publisher vel_pub_ ros::Subscriber joy_sub_ } TeleopTurtle::TeleopTurtle(): linear_(1), angular_(2) { // initialize some parameters nh_.param('axis_linear', linear_, linear_) nh_.param('axis_angular', angular_, angular_) nh_.param('scale_angular', a_scale_, a_scale_) nh_.param('scale_linear', l_scale_, l_scale_) // create a publisher that will advertise on the command_velocity topic of the turtle vel_pub_ = nh_.advertise('turtle1/cmd_vel', 1) // subscribe to the joystick topic for the input to drive the turtle joy_sub_ = nh_.subscribe('joy', 10, &TeleopTurtle::joyCallback, this) } void TeleopTurtle::joyCallback(const sensor_msgs::Joy::ConstPtr& joy) { geometry_msgs::Twist twist // take the data from the joystick and manipulate it by scaling it and using independent axes to control the linear and angular velocities of the turtle twist.angular.z = a_scale_*joy->axes[angular_] twist.linear.x = l_scale_*joy->axes[linear_] vel_pub_.publish(twist) } int main(int argc, char** argv) { // initialize our ROS node, create a teleop_turtle, and spin our node until Ctrl-C is pressed ros::init(argc, argv, 'teleop_turtle') TeleopTurtle teleop_turtle ros::spin() }

Sestavite in zaženite

V CMakeLists.txt dodajte naslednjo vrstico:

add_executable(turtle_teleop_joy src/turtle_teleop_joy.cpp) target_link_libraries(turtle_teleop_joy ${catkin_LIBRARIES})

Ustvarite zagonsko mapo in ustvarite novo zagonsko datoteko turtle_joy.launch.

<launch> <node pkg='turtlesim' type='turtlesim_node' name='sim'/> <node respawn='true' pkg='joy' type='joy_node' name='turtle_joy' > <param name='dev' type='string' value='/dev/input/jsX' /> <param name='deadzone' value='0.12' /> node> <param name='axis_linear' value='1' type='int'/> <param name='axis_angular' value='0' type='int'/> <param name='scale_linear' value='2' type='double'/> <param name='scale_angular' value='2' type='double'/> <node pkg='learning_joy' type='turtle_teleop_joy' name='teleop'/> launch>

Ne pozabite na catkin_make.

Zadnji korak, zagon!

$ roslaunch learning_joy turtle_joy.launch

fotografija

Premaknite igralno ploščico, vidite želvo, kako se premika.

fotografija

Reference

http://wiki.ros.org/joy

http://wiki.ros.org/joy/Tutorials/ConfiguringALinuxJoystick

https://www.quora.com/How-do-I-fix-Ubuntu-16-04-Bluetooth-issues

https://jstest-gtk.gitlab.io/

http://wiki.ros.org/joy/Tutorials/WritingTeleopNode

Dobrodošli, da ste pozorni na mojo javno številko

slike