Ich habe Ubuntu-16.04, ROS Kinetic auf Raspberry Pi 3 installiert und versucht, das Beispiel auszuführen.
--Installation von Ubuntu-16.04 --OS Grundeinstellungen
Referenz: Verwenden von Ubuntu 14.04 mit Raspberry Pi 2 Referenz: Raspberry Pi OS-Image auf Mac OS X- @ ledsun-Blog brennen
Laden Sie das Ubuntu-16.04-Image (ubuntu-16.04-vorinstallierter-Server-Armhf + raspi3.img.xz) von unten herunter ARM/RaspberryPi - Ubuntu Wiki
Entpacken Sie unten.
$ xz -dv ubuntu-16.04-preinstalled-server-armhf+raspi3.img.xz
Identifizieren Sie die SD-Karte mit "diskutil list" usw. Diesmal / dev / disk2
Auf SD-Karte brennen.
$ diskutil unmountDisk /dev/disk2
$ sudo dd if=ubuntu-16.04-preinstalled-server-armhf+raspi3.img of=/dev/rdisk2 bs=1m
Es wird angenommen, dass die IP-Adresse von RPi für Roomba auf "192.168.0.1" festgelegt ist.
$ sudo apt-get install -y wpasupplicant wireless-tools linunx-firmware
$ sudo vi /etc/network/interfaces.d/wlan.cfg
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
$ sudo vi /etc/default/networking
$ sudo ifup wlan0
text:/etc/network/interfaces.d/wlan.cfg
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.0.1
netmask 255.255.255.0 #In deiner eigenen Umgebung
gateway 192.168.0.254 #Zusammen setzen
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
/etc/wpa_supplicant/wpa_supplicant.conf
update_config=1
network={
proto=WPA2
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
ssid="your_ssid"
psk=**************** #Siehe unten
}
/etc/default/networking
CONFIGURTE_INTERFACES=no
** Referenz ** Die Passphrasengenerierung ist wie folgt
$ sudo sh -c "wpa_passphrase your_ssid > /etc/wpa_supplicant/wpa_supplicant.conf"
# reading passphrase from stdin
pass_phrase
network={
ssid="your_ssid"
#psk="pass_phrase"
psk=****************
}
Referenz: Installieren Sie ROS kinetic unter Ubuntu 16.04 LTS von Raspberry Pi3 | GarretCafe
Fast dasselbe wie Einfach auszuführendes ROS-Beispiel auf einer virtuellen Maschine.
$ sudo apt-get update
$ sudo apt-get install -y chrony ntpdate
$ sudo ntpdate ntp.nict.jp
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install -y ros-kinetic-ros-base # No GUI tools
$ sudo rosdep init
$ rosdep update
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ sudo apt-get install -y python-rosinstall
$ source /opt/ros/kinetic/setup.bash
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
$ cd ~/catkin_ws/
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash
$ vi ~/.bashrc
$ source ~/.bashrc
.bashrc
source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
export ROS_IP=192.168.0.1
export ROS_MASTER_URI=http://${ROS_IP}:11311
export DISPLAY=:0
alias cw='cd ~/catkin_ws'
alias cs='cd ~/catkin_ws/src'
alias cm='cd ~/catkin_ws && catkin_make'
Referenz: Roomba mit ROS ausführen (Catkin-kompatibel) --cryborg Robotics-Blog Referenz: Catkin Super Introduction (Teil 3) - Verwenden Sie das Rosbuild-Paket: Geben Sie Hanaoka einen Blumenstrauß
Repository: https://github.com/NetBUG/roomba_500_series
Wenn es einmal ist, schlägt catkin_make
oder catkin_make install
fehl, aber wenn es mehrmals ausgeführt wird, ist es schließlich erfolgreich.
$ cd ~/catkin_ws/src
$ git clone https://github.com/NetBUG/cereal_port
$ git clone https://github.com/NetBUG/roomba_500_series
$ rosdep install cerial_port
$ rosdep install roomba_500_series
$ cd ~/catkin_ws
$ catkin_make
$ catkin_make install
$ cd ~/catkin_ws/src
$ catkin_create_pkg roomba rospy std_msgs
roscore startet ohne Erlaubnis, auch wenn es nicht beschrieben ist.
$ roscd roomba
$ mkdir launch
$ mkdir scripts
$ vi launch/roomba.launch
$ vi scripts/sample.py
roomba.launch
<launch>
<node pkg="roomba_500_series" name="roomba560_node" type="roomba560_node" />
</launch>
sample.py
#!/usr/bin/env python
import rospy
from geometry_msgs.msg import Twist
rospy.init_node("sample")
pub = rospy.Publisher("cmd_vel", Twist, queue_size=10)
while not rospy.is_shutdown():
vel = Twist()
direction = raw_input("f: forward, b: backward, l: left, r: right, s: stop, q: quit > ")
if "f" in direction:
vel.linear.x = +0.1
if "b" in direction:
vel.linear.x = -0.1
if "l" in direction:
vel.angular.z = +1.0
if "r" in direction:
vel.angular.z = -1.0
if "s" in direction:
vel.linear.x = 0.0
vel.angular.z = 0.0
if "q" in direction:
break
print vel
pub.publish(vel)
$ roscd roomba_ctl/scripts
$ chmod 755 sample.py
catkin_make
$ cd ~/catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash
roslaunch
$ roslaunch roomba roomba.launch
Direkte Übertragung von Rostopic
$ export ROS_IP=<Meine IP-Adresse> #Überprüfen Sie mit ifconfig
$ rostopic pub -1 cmd_vel geometry_msgs/Twist "[0, 0, 0]" "[0, 0, 0.1]" && rostopic pub -1 cmd_vel geometry_msgs/Twist "[0, 0, 0]" "[0, 0, 0]"
Oder unten (arbeiten von sample.py)
$ export ROS_IP=<Meine IP-Adresse> #Überprüfen Sie mit ifconfig
$ roscd roomba
$ ./sample.py