ROS-Node

Dieser Node übernimmt die Kommunikation des Neobotix USBoard-USS5.

Der USBoard-USS5-Node wurde getestet mit:

  • ROS Kinetic auf Ubuntu 16.04
  • ROS Melodic auf Ubuntu 18.04
  • ROS Noetic auf Ubuntu 20.04

Sie finden den Quelltext der ROS-Node unter https://github.com/neobotix/neo_usboard_v2.

Installation

  1. Klonen Sie das neo_usboard_v2-Repository in den source-Ordner Ihres Catkin Workspace:

    cd your_catkin_workspace/src
    git clone https://github.com/neobotix/neo_usboard_v2.git
    
  2. Klonen Sie neo_msgs in den source-Ordner Ihres Catkin Workspace:

    git clone https://github.com/neobotix/neo_msgs.git
    
  3. Laden Sie die benötigten Submodule: vnx-base, pilot-base und pilot-usboard:

    cd neo_usboard_v2
    git submodule update --init
    
  4. Installieren Sie vnx-base.

    • ROS Kinetic:

      sudo dpkg -i vnx-base/x86_64/vnx-base-1.9.3-x86_64-ubuntu-16.04.deb
      
    • ROS Melodic:

      sudo dpkg -i vnx-base/x86_64/vnx-base-1.9.3-x86_64-ubuntu-18.04.deb
      
    • ROS Noetic:

      sudo dpkg -i vnx-base/x86_64/vnx-base-1.9.3-x86_64-ubuntu-20.04.deb
      
  5. Kompilieren Sie Ihren Workspace:

    cd your_catkin_workspace
    catkin_make
    

Starten

Wenn CAN verwendet wird muss der Bus zuerst konfiguriert werden:

sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up

Um den USBoard-USS5 ROS Node zu starten, verwenden Sie:

roslaunch neo_usboard_v2 neo_usboard_v2.launch

Parameter

Die folgenden Parameter können Sie in neo_usboard_v2.yaml an Ihre Bedürfnisse anpassen:

Parameter Wert Hinweis
can_id 1024 Muss ein Vielfaches von 32 sein.
can_device Nichts oder can0  
serial_port /dev/ttyUSB0  
can_baud_rate 1000000 (bit/s) Muss dem auf dem Board konfigurierten Wert entsprechen.
update_rate 5 (Hz) Nur im „Request“-Sendemodus relevant.

Bemerkung

Falls can_device ein Wert zugewiesen wird, wird der CAN-Bus zur Kommunikation verwendet, andernfalls die mit serial_port spezifizierte serielle Schnittstelle.

Die folgenden Parameter können über den Parameterserver gesetzt werden, während die ROS-Node läuft.

Parameter Wert Hinweis
low_pass_gain 1 Verstärkung des Tiefpassfilters (1 = kein Filter)
enable_analog_input false Aanalogeingänge auslesen ein/aus
enable_legacy_format false Altes Nachrichtenformat benutzen (bei automatischem Senden)
enable_can_termination false CAN-Bus-Terminierung aktivieren
relay_warn_blocked_invert false Warn-Relay invertieren, wenn ein Sensor blockiert ist
relay_alarm_blocked_invert false Alarm-Relay invertieren, wenn ein Sensor blockiert ist
active_sensors(0 to 15) true Aktive Sensoren
warn_distance(0 to 15) 100 cm Warndistanz pro Sensor
alarm_distance(0 to 15) 30 cm Alarmdistanz pro Sensor
enable_transmission(0 to 4) true Gruppe in automatischem Modus aktiviert
fire_interval_ms 20 ms Zeit zwischen zwei Impulsen
sending_sensor 0 Index des Sensors der im Kreuzechomodus den Impuls sendet
cross_echo_mode false Kreuzechomodus an/aus

Bemerkung

Um die ROS-Parameter aus der Anwendung heraus zu setzen, empfehlen wir den Service /usboard_v2/set_parameters. Wenn ein Setzen über die Kommandozeile nötig ist, benutzen Sie den Befehl rosrun dynamic_reconfigure dynparam set param value. Nutzen Sie den Befehl ros param list, um die verfügbaren Parameter anzuzeigen.

Topics

Die folgenden ROS Topics sind verfügbar:

Name Typ
/usboard_v2/measurements neo_msgs/msgs/USBoardV2
/usboard_v2/sensor1 sensor_msgs/Range
/usboard_v2/sensor2 sensor_msgs/Range
 
/usboard_v2/sensor16 sensor_msgs/Range

Mehrere USBoards

Im Fall von mehreren USBoard-USS5 ist es möglich, für jedes Board eine eigene ROS-Node zu starten.

Parameter

Jede ROS-Node braucht ihre eigene yaml-Konfigurationsdatei, sehen Sie zum Beispiel neo_usboard_v2.yaml und neo_usboard_v2_1.yaml in https://github.com/neobotix/neo_usboard_v2/tree/main/launch:

can_id: 1024
can_device: None
#can_device: can0
serial_port: /dev/ttyUSB0
can_baud_rate: 1000000
update_rate: 5
topic_path: /usboard_v2
can_id: 1056
can_device: None
#can_device: can1
serial_port: /dev/ttyUSB1
can_baud_rate: 1000000
update_rate: 5
topic_path: /usboard_v2_1

Bemerkung

CAN-IDs müssen ein Vielfaches von 0x20 sein, also 32 in Dezimalschreibweise.

Mehrere ROS-Nodes starten

Die Standard-Launchfile neo_uusboard_v2.launch enthält ein Beispiel, um eine weitere ROS-Node zu starten:

<?xml version="1.0"?>
<launch>
    <!-- Load usboard_v2 params -->
    <rosparam command="load" ns="usboard_v2" file="$(find neo_usboard_v2)/launch/neo_usboard_v2.yaml"/>
    <!-- start usboard_v2 node -->
    <node pkg="neo_usboard_v2" type="neo_usboard_v2" ns="usboard_v2" name="usboard_v2_node" respawn="false" output="screen"/>

    <!-- Load usboard_v2 params for second board -->
    <rosparam command="load" ns="usboard_v2_1" file="$(find neo_usboard_v2)/launch/neo_usboard_v2_1.yaml"/>
    <!-- start usboard_v2 node for second board -->
    <node pkg="neo_usboard_v2" type="neo_usboard_v2" ns="usboard_v2_1" name="usboard_v2_node_1" respawn="false" output="screen"/>

</launch>

Entfernen Sie einfach die Kommentarzeichen beim zweiten Block und eine zweite ROS-Node zu starten.

Um alle konfigurierten Nodes zu starten:

roslaunch neo_usboard_v2 neo_usboard_v2.launch

Hilfe

Wenn Sie den Fehler unable to connect to port /dev/ttyUSB0 erhalten, führen Sie folgenden Befehl aus:

sudo usermod -a -G dialout $USER

und starten Sie Ihren PC neu.