Items with no label
3338 討論

rostopic echo (on remote machine)

JFran14
新手
4,899 檢視

Hi all,

I apologize in advance if this is a real ROS beginner's question...

I believe I've properly configured a remote machine to use the Euclid as ROS master. I can 'rostopic list' just fine, and I can 'rostopic echo' topics that have generic messages.

For example:

- 'rostopic echo /rosout' works fine.

- running 'rostopic pub /test_topic std_msgs/Bool true' on the Euclid, and

'rostopic echo /test_topic' on the remote machine also works fine.

What I can't echo are any of the Euclid specific topics:

/cpu_info /hardware_status /nodes_status /usb_status /wifi_status

jay@Jay-MacBookPro:~$ rostopic echo /cpu_info

ERROR: Cannot load message class for [system_monitor/CpuStatus]. Are your messages built?

jay@Jay-MacBookPro:~$ rostopic echo /nodes_status

ERROR: Cannot load message class for [configuration_node/NodesStatus]. Are your messages built?

jay@Jay-MacBookPro:~$ rostopic echo /usb_status

ERROR: Cannot load message class for [system_monitor/USBStatus]. Are your messages built?

jay@Jay-MacBookPro:~$ rostopic echo /wifi_status

ERROR: Cannot load message class for [system_monitor/WifiStatus]. Are your messages built?

Digging around online seems to point to these messages types not being published properly (?). Or, maybe I still don't have something configured properly between the two machines?

I'm sure someone will know right away what I'm doing wrong... Any help would be appreciated :-)

Thanks,

Jay

0 積分
6 回應
Meitav_K_Intel
3,462 檢視

Hi Jay,

Can you check to see if your euclid is publishing these topics at all? Try using "rostopic hz " to check the rate of data in that topic.

I believe that you might have the msg type missing from your remote machine. In that case I think you can get them with "sudo apt-get install ros-kinetic-system-monitor ros-kinetic-configuration-node"

Let me know if this works.

Meitav

Intel Euclid Development Team

JFran14
新手
3,462 檢視

Hi Meitav,

Yes, the Euclid is publishing the messages.

You're correct, the remote machine is missing the two packages you mentioned. What repository should I be using to obtain those packages? They look like they're Intel Euclid specific and don't indicate where to find them (via apt-cache policy). My remote machine can't find them with the standard repositories (including deb http://packages.ros.org/ros/ubuntu http://packages.ros.org/ros/ubuntu xenial main).

(on the Euclid)

'dpkg -s ros-kinetic-system-monitor'

Package: ros-kinetic-system-monitor

Status: install ok installed

Priority: extra

Section: misc

Maintainer: Intel Euclid Support <</span>mailto:euclid.support@intel.com euclid.support@intel.com>

Architecture: amd64

Source: ros-kinetic-system-monitor

Version: 1.0.1

Depends: ros-kinetic-message-runtime, ros-kinetic-roscpp, ros-kinetic-rospy, ros-kinetic-std-msgs

Description: Euclid system_monitor package

'apt-cache policy ros-kinetic-system-monitor'

ros-kinetic-system-monitor:

Installed: 1.0.1

Candidate: 1.0.1

Version table:

*** 1.0.1 100

100 /var/lib/dpkg/status

Thanks,

Jay

Meitav_K_Intel
3,462 檢視

Hi Jay,

While I'm not sure if this is the best method, a good workaround would be to copy the packages from the Euclid (located at "/usr/share/ubuntu/scripts/oem-config.d/data/ros/") and install the ones you need (mainly ros-kinetic-system-monitor and ros-kinetic-configuration-node).

Doing this enabled me to echo these 4 topics on my remote machine without a problem.

Let me know if this works for you.

Meitav

Intel Euclid Development Team

JFran14
新手
3,462 檢視

Hi Meitav,

Interesting... my Euclid doesn't have the /data/ros directory:

euclid@EUCLID_71C5:/usr/share/ubuntu/scripts/oem-config.d$ ls

custom early late

But, following your thought process, I came up with another solution.

On my remote machine:

- I created a new catkin workspace (I called it euclid_ws)

- I then cloned euclid_configuration_node and euclic_system_monitor into that workspace from the Euclid GitHub (https://github.com/IntelEuclid Intel® Euclid™ · GitHub )

- sourced the euclid_ws/devel/setup.bash

Now my remote machine can understand the messages.

Certainly in this case this method works. I could see other cases where it wouldn't be desirable to rebuild an entire package just to create the message definitions. This is where my ROS inexperience shows - maybe there's a proper way to just build messages from a package?

My general problem is solved. Would love to get pointers on better ways to do this.

Thanks,

Jay

Meitav_K_Intel
3,462 檢視

Hi Jay,

I'm glad you found the solution.

As far as I know there really isn't a proper way to do it normally, other than building some package that has those msg types, so making a solution for less experienced users such as an installation script will probably be handy. That's a good idea!

I will add this to our development backlog. Maybe something along the lines of having a remote machine sdk for Euclid.

Meitav

Intel Euclid Development Team

JFran14
新手
3,462 檢視

Hi Meitav,

Sounds like a lightweight package just with message definitions (plus other exposed service definition?) would be helpful.

I'm sure this won't be a high priority :-) Your team must have more critical things in the development backlog.

Thanks again for talking through the problem.

--Jay

回覆