< All Topics
Print

NEPI Engine – Configuring a PC for NEPI ROS Env

Introduction

This tutorial will take you through setting up your PC’s ROS installation to communicate with the ROS master running on your NEPI device. Some useful PC side ROS tools are also covered.

Useful References

– NEPI Engine – Users Manuals https://nepi.com/documentation/

– Running ROS across multiple machines http://wiki.ros.org/ROS/Tutorials/MultipleMachines

What you will need

1) 1x NEPI-enabled device with internet access. This tutorial uses an edge-compute processor box that includes an NVIDIA Jetson Xavier NX embedded GPU with NEPI Engine software installed.

NOTE: See available off-the-shelf NEPI enabled edge-compute options at:  https://numurus.com/products-nepi-enabled-hardware/

2) 1x Linux PC with Ubuntu 20.04 OS configured to access the NEPI device’s RUI browser-based interface. This tutorial uses a Linux PC and a USB GigE Ethernet adapter.

NOTE: Instructions for configuration a PC and connecting to a NEPI device are provided in the NEPI Engine Getting Started tutorial at: https://nepi.com/nepi-tutorials/nepi-engine-connecting-and-setup/

Setup HOST PC for remote ROS master

1) Install ROS on your PC by following the instructions to install ROS Noetic on your Linux Ubuntu 20.04 PC available at: https://medium.com/@createwithabd/ros-noetic-installation-guide-on-ubuntu-20-04-388568d24bcf

2) Edit your PC’s bashrc file

The following environment variables must be set on your Linux PC by adding appropriate entries to your .bashrc file:

a) Open your .bashrc file with:

sudo nano ~/.bashrc

b) Add these lines to the bottom of the file:

export ROS_MASTER_URI=http://<IP Address of your NEPI device>:11311

export ROS_IP=<IP Address of your PC>

c) The factory IP address for NEPI devices is “192.168.179.103”. The recommended IP address for your PC is 192.168.179.5

c) These may vary if you setup a custom IP addresses on your PC and NEPI device press “Ctrl-x”, then “Y”, then “enter” to save and exit.

3) Edit your PC’s “hosts” file

a) The NEPI must be identifiable by hostname to your system. Add the following to your PC’s “hosts” file by opening a terminal on your PC and typing:

sudo nano /etc/hosts

b) Add the following line to your file, replacing the items in yellow with your actual system values:

<IP Address of your NEPI-enabled device> <Name of your NEPI device>

c) Example based on default Numurus S2X system settings is:

192.168.179.103 nepi-s2x

d) The factory ip address for NEPI devices is “192.168.179.103” . NEPI device is “192.168.179.103”. Your can check the name of your NEPI device opening an SSH connected terminal and copying the device name shown after the “nepi@” at the command line.

A black background with white text Description automatically generated

e) Press “Ctrl-x”, then “Y”, then “enter” to save and exit.

4) Add custom NEPI ROS message interfaces to your PC’s ROS system

Some of the ROS topics and services that constitute the NEPI ROS API include custom message and service types that must be known to your host device. On you PC perform the following steps for building nepi_ros_interfaces custom ROS messages and sourcing them into your environment:

a) Ensure you have “catkin-tools” installed by opening a terminal on your PC and entering:

sudo apt-get update && sudo apt-get install python3-catkin-tools

b) Download the nepi_ros_interfaces repo from the following website and selecting the “Downloads” option from the left menu bar, then selecting “Download Repository”

https://bitbucket.org/numurus/nepi_ros_interfaces/src/master/

c) Open file manager and navigate to the download folder where your downloaded zip file is located.

d) Right-click the download zip file and select the “Extract Here” option to unzip the file.

e) Right-click on the unzipped folder and select “Open in Terminal” option from menu. In the terminal window, run the following commands.

mkdir -p ~/nepi_catkin_ws/src

catkin init --workspace ~/nepi_catkin_ws

cd ..

mv numurus-nepi_ros_interfaces-c169452d3ce9 ~/nepi_catkin_ws/src/

cd ~/nepi_catkin_ws

catkin build

f) Open your .bashrc file with:

sudo nano ~/.bashrc

g) Add this line to the bottom of the file:

source ~/nepi_catkin_ws/devel/setup.bash

h) Press “Ctrl-x”, then “Y”, then “enter” to save and exit.

5) Test Your NEPI ROS Connection

Close and open a new terminal window on your PC. With a NEPI device powered up and connected to your PC over Ethernet or WiFi, test the following ROS command that lists all ROS topics available on your NEPI device:

a) First check that you can connect to remote ROS master by typing the following command in a terminal on our PC

rostopic list

b) You should see a long list of topics that look something like:

/clicked_point

/diagnostics

/initialpose

/move_base_simple/goal

/nepi/s2x/add_ip_addr

/nepi/s2x/add_ntp_server

/nepi/s2x/apply_throttle

/nepi/s2x/archive_inactive_rootfs

/nepi/s2x/automation_mgr/reset

---

c) Next, check that you can receive ROS messages from the NEPI device by typing the following command in a terminal on our PC

rostopic echo /nepi/s2x/system_status

e) You should see a long list of topics that look something like:

sys_time:

secs: 1677762215

nsecs: 426549911

temperatures: [41.0]

disk_usage: 46217.49609375

storage_rate: 0.0013020833721384406

save_all_enabled: False

info_strings: []

---

f) Learn more about the “rostopic” command and all of the available options it offers for monitoring and introspection of your NEPI ROS environment at: http://wiki.ros.org/rostopic

Debugging Suggestions

If you are having issues after setup with these test commands producing the proper output, or getting errors, here are a few steps to take:

a) Ensure your PC and NEPI device ethernet connection is working correctly by opening a terminal on your PC and typing:

ping <Your NEPI Device’s IP Address>

The factory IP address for NEPI devices is “192.168.179.103”

ping 192.168.179.103

You should see a valid connection reply like the image below

A screen shot of a computer Description automatically generated

b) ensure that all of the bashrc and hosts file edits are correct on your PC and NEPI device file systems as instructed in sections 1 and 2 of this tutorial

c) Open a terminal on your PC and type:

roswtf

This should print out a number of ROS connection status messages. Look through the messages and try to find possible issues in the print out.

Additional Useful PC Side ROS Tools

1) Using ROS RQT to monitor NEPI ROS processing

a) Open a terminal on your PC and type:

rqt

This will bring up the ROS RQT application.

A screenshot of a computer Description automatically generated

b) Select the Plugins/Logging/Console option from the dropdown menu.

A screenshot of a computer Description automatically generated

c) This will open a console monitoring window that shows all the NEPI ROS process messages in real-time. If you want to catch the ROS process message from startup, you will want to power cycle your NEPI device, open the rqt application, select the Plugins/Logging/Console option from the dropdown menu, and wait for the NEPI ROS system to load and connect. You should start to see NEPI ROS process messages once they console connects as shown below.

A screenshot of a computer Description automatically generated

Learn more about the ROS RQT application at: http://wiki.ros.org/rqt

2) Using ROS rviz application for real-time data viewing

a) Open a terminal on your PC and type:

rviz

This will bring up the ROS RVIZ application.

A screenshot of a computer Description automatically generated

b) Either configure the rviz configuration setup yourself from within the application, or use the example 2D camera rviz configuration text provided in Appendix A of this tutorial by creating a new text document called “NEPI_2D_Cam.rviz” on your PC, pasting the rviz configuration text from Appendix A of this tutorial, saving the file, then loading your configuration by selecting the File/Open Config option from the dropdown menu and selecting your “NEPI_2D_Cam.rviz” file.

A screenshot of a computer Description automatically generated

c) Choose the “Close without Saving” option

A screenshot of a computer Description automatically generated

d) After loading the NEPI_2D_Cam. rviz config file, choose a valid ROS Image Topic message from the dropdown list next to the Image Topic left menu item. You should start to see images displayed in the image window below.

A screenshot of a computer Description automatically generated

Appendix A – Example NEP_2D_Cam.rviz file text

Panels:

- Class: rviz/Displays

Help Height: 0

Name: Displays

Property Tree Widget:

Expanded:

- /Global Options1

- /Grid1

- /Coordinates1/Frames1

- /Camera_Image1

- /Camera_Image1/Status1

Splitter Ratio: 0.6617646813392639

Tree Height: 971

- Class: rviz/Selection

Name: Selection

- Class: rviz/Tool Properties

Expanded:

- /2D Pose Estimate1

- /2D Nav Goal1

- /Publish Point1

Name: Tool Properties

Splitter Ratio: 0.5886790156364441

- Class: rviz/Views

Expanded:

- /Current View1

Name: Views

Splitter Ratio: 0.5

- Class: rviz/Time

Name: Time

SyncMode: 0

SyncSource: ""

Preferences:

PromptSaveOnExit: true

Toolbars:

toolButtonStyle: 2

Visualization Manager:

Class: ""

Displays:

- Alpha: 0.5

Cell Size: 1

Class: rviz/Grid

Color: 160; 160; 164

Enabled: true

Line Style:

Line Width: 0.029999999329447746

Value: Lines

Name: Grid

Normal Cell Count: 0

Offset:

X: 0

Y: 0

Z: 0

Plane: XY

Plane Cell Count: 10

Reference Frame: <Fixed Frame>

Value: true

- Class: rviz/TF

Enabled: false

Filter (blacklist): ""

Filter (whitelist): ""

Frame Timeout: 15

Frames:

All Enabled: false

Marker Alpha: 1

Marker Scale: 1

Name: Coordinates

Show Arrows: true

Show Axes: true

Show Names: true

Tree:

{}

Update Interval: 0

Value: false

- Class: rviz/Image

Enabled: true

Image Topic: /nepi/s2x/nexigo_n60_fhd_webcam_audio/idx/color_2d_image

Max Value: 1

Median window: 5

Min Value: 0

Name: Camera_Image

Normalize Range: true

Queue Size: 2

Transport Hint: raw

Unreliable: false

Value: true

Enabled: true

Global Options:

Background Color: 48; 48; 48

Default Light: true

Fixed Frame: stereo_cam_imu_link

Frame Rate: 30

Name: root

Tools:

- Class: rviz/Interact

Hide Inactive Objects: true

- Class: rviz/MoveCamera

- Class: rviz/Select

- Class: rviz/FocusCamera

- Class: rviz/Measure

- Class: rviz/SetInitialPose

Theta std deviation: 0.2617993950843811

Topic: /initialpose

X std deviation: 0.5

Y std deviation: 0.5

- Class: rviz/SetGoal

Topic: /move_base_simple/goal

- Class: rviz/PublishPoint

Single click: true

Topic: /clicked_point

Value: true

Views:

Current:

Class: rviz/Orbit

Distance: 37.10993957519531

Enable Stereo Rendering:

Stereo Eye Separation: 0.05999999865889549

Stereo Focal Distance: 1

Swap Stereo Eyes: false

Value: false

Field of View: 0.7853981852531433

Focal Point:

X: 0.40499138832092285

Y: -0.015869140625

Z: 0.0008551292703486979

Focal Shape Fixed Size: true

Focal Shape Size: 0.05000000074505806

Invert Z Axis: false

Name: Current View

Near Clip Distance: 0.009999999776482582

Pitch: 1.1197961568832397

Target Frame: <Fixed Frame>

Yaw: 3.6203877925872803

Saved: ~

Window Geometry:

Camera_Image:

collapsed: false

Displays:

collapsed: false

Height: 2272

Hide Left Dock: false

Hide Right Dock: false

QMainWindow State: 000000ff00000000fd0000000400000000000005ce000007dafc0200000010fb0000001200530065006c0065006300740069006f006e000000006e000000b5000000b000fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000006e000004390000018200fffffffb0000001800430061006d006500720061005f0049006d00610067006501000004b3000003950000002600fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000a0044006500700074006801000002b7000000800000000000000000fb00000016004c006500660074002000430061006d0065007200610000000186000002360000000000000000fb000000160053006f006e00610072005f0049006d006100670065010000018f0000006d0000000000000000fb0000001800430061006d006500720061005f004400650070007400680000000822000000260000000000000000fb000000160044006500700074006800200049006d00610067006500000003c2000000c00000000000000000fb0000001800520069006700680074002000430061006d0065007200610000000488000000990000000000000000fb000000160053006f006e00610072005f0044006500700074006800000005d300000275000000000000000000000001000004a7000007dafc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000006e000007da0000013200fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e1000001970000000300000e700000005efc0100000002fb0000000800540069006d0065010000000000000e70000006dc00fffffffb0000000800540069006d00650100000000000004500000000000000000000003e3000007da00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000

Selection:

collapsed: false

Time:

collapsed: false

Tool Properties:

collapsed: false

Views:

collapsed: false

Width: 3696

X: 144

Y: 54

Table of Contents