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
連結已複製
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
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
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
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
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
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
