xqms / rosmon Goto Github PK
View Code? Open in Web Editor NEWROS node launcher & monitoring daemon
License: Other
ROS node launcher & monitoring daemon
License: Other
Quoting from #44:
BUT, digging a bit further, I have noticed that the
launch
files I was loading on the fly did not have a specified namespace. With roslaunch, all the nodes in the launch file inherit the namespace of the node starting them and not with rosmon. So adding a<group ns="my_ns">
in the launch file fixed the parameters issues but make it not compatible with roslaunch.
Probably roslaunch
respects the environment variable ROS_NAMESPACE
- so we should do that as well.
Hi all,
once more thanks for sharing this great tool.
I have been using it a lot lately and found a behavior mismatch with roslaunch about the usage of "anon" names for nodes.
I created a minimal example here.
The package contains two launch files:
name="$(anon talker)"
If the user executes
roslaunch rosmon_anon_issue main.launch
Then the launch succeeds and there are two nodes with anonymous names:
$ rosnode list
/rosout
/talker_rsl_l25_4797_5574635845418076715
/talker_rsl_l25_4797_7425401142298951921
On the other hand, if the user types
mon launch rosmon_anon_issue main.launch
Then the following error is reported:
Could not load launch file: /home/marcot/catkin_ws/src/launch_file_examples/rosmon_anon_issue/launch/anon_node_include.launch:6: node name 'talker_52666652' is not unique
@xqms any hints about this?
Thanks a lot for your help,
Marco.
In monitor.cpp, endStatUpdate() should take an elapsed time argument. Instead, it's currently taking in the return value of kernel_hz(), which is just a hardcoded number of ticks per second...
Hi,
I'm currently starting to use rosmon as an alternative to roslaunch - and it works well. However, one thing I'm missing is the ROS standard output (INFO, WARN, ERROR). With roslaunch, they appear right in the console and they are often quite helpful.
Is it possible to show them in rosmon too?
Best,
Martin
For my use case I have no issues when launching with roslaunch
but rosmon
results in errors when initializing the move_group
planning pipeline. I get the below for each default adapter in default_planner_request_adapters
(four in all), resulting in my joint_trajectory_action server never coming up.
move_group: [PlanningPipeline::configure]: Exception while loading planning adapter plugin 'default_planner_request_adapters/AddTimeParameterization
move_group: ': According to the loaded plugin descriptions the class default_planner_request_adapters/AddTimeParameterization
move_group: with base class type planning_request_adapter::PlanningRequestAdapter does not exist. Declared types are default_planner_request_adapters/AddTimeParameterization default_planner_request_adapters/Empty default_planner_request_adapters/FixStartStateBounds default_planner_request_adapters/FixStartStateCollision default_planner_request_adapters/FixStartStatePathConstraints default_planner_request_adapters/FixWorkspaceBounds industrial_trajectory_filters/AddSmoothingFilter industrial_trajectory_filters/NPointFilter industrial_trajectory_filters/UniformSampleFilter
FYI I am pushing EVERYTHING down into a separate namespace via <group ns=...>
tag in the high-level launch files in case that makes a difference.
With 3 nodes, one can press 'd' (instead of a, b, c) and crash rosmon.
rosmon
already handles SIGINT
signal here:
Line 389 in edf2742
But roslaunch
also handles SIGTERM
and SIGUP
signals as seen here:
One use case I have is when a rosmon
instance is launched within a QProcess. QProcess only provides SIGTERM
, via QProcess::termate() and SIGKILL
via QProcess::kill().
As SIGTERM
and SIGINT
are quite close in semantics according to this page, I think that it would be nice if rosmon
also handles SIGTERM
.
What do you think about that?
There seems to be a difference when loading YAML files in which quoted values are not interpreted the same as with roslaunch
. This results in type issues when invoking rosparam
(esp. when using XmlRpc
objects).
Use case is using <rosparam command="load" file="path/to/config.yaml"/>
in the launch file.
Quoted numbers (e.g., my_param: "76") were still loading as ints (instead of strings per the spec?).
Ultimately this was found due to me accidentally quoting some numeric parameters and has now been resolved on my end by simply removing quotes and having better type checking / assertions when parsing XmlRpc
objects but thought it worth reporting.
Hi Max,
I noticed that loading a non-existent text file to the parameter server does not give any error with rosmon (it does with roslaunch).
A simple example is the following broken_launch.launch
:
<launch>
<param name="myparam" textfile="/my/fake/file"/>
</launch>
On my machine (ubuntu 16.04, ros kinetic) rosmon output is:
arturo@alaurenzi-iit-laptop ~/Code/ifstream_test $ mon launch broken_launch.launch
Loaded launch file in 0.000039s
ROS_MASTER_URI: 'http://localhost:11311'
roscore is already running.
Running as '/rosmon_1545570088481348458'
No ROS nodes to be launched. Finished...
Looking at the relevant code, the reason appears to be that file read errors are tested with ifstream::bad()
. However, from the simple test below it looks like the correct way is actually to use ifstream::operator bool
.
#include <fstream>
int main()
{
std::ifstream file("my/fake/file");
if(file.bad())
{
throw std::runtime_error("bad");
}
if(!file)
{
throw std::runtime_error("!file");
}
return 0;
}
On my system, the output is
arturo@alaurenzi-iit-laptop ~/Code/ifstream_test $ ./ifstream_test
terminate called after throwing an instance of 'std::runtime_error'
what(): !file
Aborted (core dumped)
which shows that file.bad()
returns false
.
When running the MIT Racecar project on simulation, it starts with roslaunch
but not rosmon
.
Here is the log with rosmon
:
gazebo: [ServiceClientLink::handleHeader]: received a tcpros connection for a nonexistent service [//racecar/controller_manager/load_controller].
controller_manager: [main]: Controller Spawner: Waiting for service controller_manager/switch_controller
gazebo: [ServiceClientLink::handleHeader]: received a tcpros connection for a nonexistent service [//racecar/controller_manager/switch_controller].
controller_manager: [main]: Controller Spawner: Waiting for service controller_manager/unload_controller
gazebo: [ServiceClientLink::handleHeader]: received a tcpros connection for a nonexistent service [//racecar/controller_manager/unload_controller].
controller_manager: [main]: Loading controller: left_rear_wheel_velocity_controller
gazebo: [ServiceClientLink::handleHeader]: received a tcpros connection for a nonexistent service [//racecar/controller_manager/load_controller].
controller_manager: Traceback (most recent call last):
controller_manager: File "/opt/ros/melodic/lib/controller_manager/spawner", line 209, in <module>
controller_manager: if __name__ == '__main__': main()
controller_manager: File "/opt/ros/melodic/lib/controller_manager/spawner", line 187, in main
controller_manager: resp = load_controller(name)
controller_manager: File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py", line 439, in __call__
controller_manager: return self.call(*args, **kwds)
controller_manager: File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py", line 509, in call
controller_manager: raise ServiceException("unable to connect to service: %s"%e)
controller_manager: rospy.service.ServiceException: unable to connect to service: remote error reported: received a tcpros connection for a nonexistent service [//racecar/controller_manager/load_controller].
controller_manager: [shutdown]: Shutting down spawner. Stopping and unloading controllers...
controller_manager: [shutdown]: Stopping all controllers...
gazebo: [ServiceClientLink::handleHeader]: received a tcpros connection for a nonexistent service [//racecar/controller_manager/switch_controller].
controller_manager: [shutdown]: Controller Spawner error while taking down controllers: unable to connect to service: remote error reported: received a tcpros connection for a nonexistent service [//racecar/controller_manager/switch_controller].
You can notice the double slash //
in the service name.
This double slash is due to the ns="/"
here:
And the leading slash in ns="/racecar"
here:
Removing both make the system work with rosmon
.
As the title suggests, using this on my projects I had issues with arguments not properly being passed through to subsequent launch files when using <include>
with the pass_all_args
attribute.
Commands given as argument for including linebreaks are executed line by line.
Minimal working example (multiline.launch):
<launch>
<param name="dummy_param" command="echo -n
dummy_value" />
</launch>
Expected result (removed unnecessary standard output):
# roslaunch ./multiline.launch
# rosparam get /dummy_param
dummy_value
Actual result:
# mon launch ./multiline.launch
sh: 2: dummy_value: not found
# rosparam get /dummy_param
''
Hello,
I am using rosmon, and trying to install my packages with catkin_make install, in /opt/my_custom_install_dir and I am experiencing the following issue:
When launching rosmon, after sourcing the local setup.bash and trying to launch all the nodes, every of them are throwing the same exception:
node_name: what(): Could not find node 'node_name' in package '/package_name'
How should I debug this problem? I keep changing the final destination of the binaries, but I am not sure of where is rosmon looking for the binaries, there is a verbosity level or some tool to debug this kind of things?
Thanks,
Nicolas.
example:
<?xml version="1.0" ?>
<launch>
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find franka_description)/robots/panda_arm_hand.urdf.xacro'"/>
</launch>
My device has limited storage on the boot disk (it is an embedded ARM device).
The rosmon coredumps to tmp ("/tmp/rosmon-node-XXXXXX") are well over 1GB in my case, and have just filled my boot drive.
I've found that the "enable-coredumps" attribute is available for each node. However, there is no global parameter to disable all coredumps, or change the dump directory (e.g. to a larger external disk).
It may be worthwhile having such global parameters. I could create PR if suitable.
Ran into an issue where rosmon was failing to spawn a node. The log file reported:
Could not execute <blah blah blah> : Bad address
<blah> died from signal 6
Per execvp documentation, the list of args must be terminated by a NULL pointer, so adding this before the call to execvp (line 165 in shim.cpp) seems to resolve the issue:
args.push_back((char*)NULL);
If I enter
mon launch <first_letters_of_package_name><TAB><TAB>
in a sourced workspace, then I get the following:
(eval):1: no matches found: *.launch:globbed-files
(eval):1: no matches found: *.launch:globbed-files
(eval):1: no matches found: *.launch:globbed-files
Bash completion works.
After upgrading to 2.1.0-1 on Ubuntu 18.04 and launching a previously running launch file now fails.
All nodes crash with the following error message:
[rosrun] Couldn't find executable named _shim below /opt/ros/melodic/share/rosmon_core
node: node exited with status 3
whereas the same launch file runs fine with roslaunch.
Was there some error during packaging? Seems that this executable is missing.
dpkg -L ros-melodic-rosmon-core
yields:
.
/opt
/opt/ros
/opt/ros/melodic
/opt/ros/melodic/etc
/opt/ros/melodic/etc/catkin
/opt/ros/melodic/etc/catkin/profile.d
/opt/ros/melodic/etc/catkin/profile.d/50-rosmon.bash
/opt/ros/melodic/etc/catkin/profile.d/50-rosmon.zsh
/opt/ros/melodic/lib
/opt/ros/melodic/lib/librosmon_launch_config.so
/opt/ros/melodic/lib/pkgconfig
/opt/ros/melodic/lib/pkgconfig/rosmon_core.pc
/opt/ros/melodic/lib/rosmon_core
/opt/ros/melodic/lib/rosmon_core/rosmon
/opt/ros/melodic/share
/opt/ros/melodic/share/rosmon_core
/opt/ros/melodic/share/rosmon_core/catkin_env_hook
/opt/ros/melodic/share/rosmon_core/catkin_env_hook/50-rosmon.bash
/opt/ros/melodic/share/rosmon_core/catkin_env_hook/50-rosmon.zsh
/opt/ros/melodic/share/rosmon_core/cmake
/opt/ros/melodic/share/rosmon_core/cmake/rosmon_coreConfig-version.cmake
/opt/ros/melodic/share/rosmon_core/cmake/rosmon_coreConfig.cmake
/opt/ros/melodic/share/rosmon_core/package.xml
/usr
/usr/share
/usr/share/doc
/usr/share/doc/ros-melodic-rosmon-core
/usr/share/doc/ros-melodic-rosmon-core/changelog.Debian.gz
Hello,
First of all, thanks for making this great project available!
I need to compile rosmon for a target that only runs ROS Indigo. Since rosmon is not available on the repositories for ROS Indigo, I tried to compile it by myself but I faced some problems:
set(CURSES_LIBRARY "/opt/lib/libncurses.so")
set(CURSES_INCLUDE_PATH "/opt/include")
After adding these lines, CMake could find Curses correctly. Is there a better solution for this?
/home/lucas/catkin_ws/build/rosmon/ui_mon_gui.h: In member function ‘void Ui_MonGUI::retranslateUi(QWidget*)’:
/home/lucas/catkin_ws/build/rosmon/ui_mon_gui.h:79:18: error: ‘class QComboBox’ has no member named ‘setCurrentText’
nodeBox->setCurrentText(QApplication::translate("MonGUI", "[auto]", 0, QApplication::UnicodeUTF8));
Very weird, I've cheched and I have qt5dev installed. I've also compiled other qt5 applications on my computer with no problem.
In file included from /home/lucas/catkin_ws/src/rosmon/src/monitor/monitor.cpp:4:0:
/home/lucas/catkin_ws/src/rosmon/src/monitor/monitor.h:70:2: error: ‘SteadyTimer’ in namespace ‘ros’ does not name a type
ros::SteadyTimer m_statTimer;
From the reserach I've made, the SteadyTimer class was introduced in ROS Kinetic (not exactly sure about that, but you can compare these two pages http://docs.ros.org/indigo/api/roscpp/html/annotated.html http://docs.ros.org/kinetic/api/roscpp/html/annotated.html)
Considering the problems faced, do you think it would be possible to have rosmon in ROS Indigo too?
It seems that we incorrectly set "1" on the parameter server if the type is set to boolean. It should be "true".
We use yaml aliases to prevent configuration duplication.
When two nodes use a very similar set of parameters we can setup a parameter file like this:
(The two nodes being: kalman_filter_odom
and kalman_filter_map
kalman_filter_odom: &KALMAN_FILTER_ODOM
world_frame: "odom"
imu0: imu/data
imu0_config: [false, false, false, # X,Y,Z,
true, true, true, # roll,pitch,yaw,
false, false, false, # X`,Y`,Z`,
true, true, true, # roll`,pitch`,yaw`,
true, true, true] # X``,Y``,Z``
odom0: wheels/odom
odom0_config: [false, false, false, # X,Y,Z,
false, false, false, # roll,pitch,yaw,
true, true, false, # X`,Y`,Z`,
false, false, true, # roll`,pitch`,yaw`,
false, false, false] # X``,Y``,Z``
kalman_filter_map:
<<: *KALMAN_FILTER_ODOM # All settings and inputs kalman_filter_odom has and:
world_frame: "map"
odom1: absolute/odom
odom1_config: [true, true, true, # X,Y,Z,
false, false, false, # roll,pitch,yaw,
false, false, false, # X`,Y`,Z`,
false, false, false, # roll`,pitch`,yaw`,
false, false, false] # X``,Y``,Z``
This is supported by roslaunch in melodic. But rosmon crashes with the following error:
Running as '/rosmon_1574149719933920064'
terminate called after throwing an instance of 'ros::InvalidNameException'
what(): Character [<] at element [19] is not valid in Graph Resource Name [/kalman_filter_map/<</frequency]. Valid characters are a-z, A-Z, 0-9, / and _.
Aborted (core dumped)
mon launch reports Caught Python exception while evaluating $(eval parameter_name == true):
<launch>
<arg name="arg_name" default="false"/>
<node name="node_name" pkg="pkg_name" type="node_type" output="screen">
<rosparam if="$(eval arg_name == true)" param="another_param">false</rosparam>
</node>
</launch>
replace $(eval arg_name == true)
with $(eval arg_name == True)
rosmon
is not (yet?) able to start a roscore
and it is not quite and issue.
But in a multi machines setup, it is quite common that a launch has to wait for the master on a remote computer to come-up.
For now, rosmon
exits if no master is detected.
I think it would be nice to add a --wait
option like roslaunch
to keep the rosmon waiting for the master to come up.
rosmon did not detect missing valgrind installation
Hi
Are there plans to release version 2.2.1 also for Kinetic?
Michael
It seems that roslaunch does standard XML/HTML compression of whitespace inside <param>
values (e.g. "a<TAB><SPACE><TAB>b" => "ab"
). If that is the case (check the source!), we should do that as well.
While reading http://wiki.ros.org/roslaunch/XML/param again for #40, I discovered the ~private
syntax:
<launch>
<param name="~private" value="test" />
<group ns="group_ns">
</group>
<node name="joy" pkg="joy" type="joy_node">
</node>
</launch>
This will result in a parameter /joy/private
. I'm not aware of anyone using this - but we should probably support it...
here we are closing node and opening new one and getting log data , i do not want to close in want only log messages into file or i will publish that msg by my own. Is there anything like that
At our lab, we would like to use your tool to monitor ROS on multiple machines.
However, it doesn't look to be possible at the moment as the <machine>
tag is not supported yet.
Are you planning to keep developing the tool to make it work on multiple machines in the next future?
Otherwise, we may consider to implement this functionality ourselves.
If someone else is interested or planning to implement it, please comment here, so we can put some effort together and avoid to replicate the work.
Thanks!
Hi.
Is there any way to start new node using rosmon after rosmon has been exectued with launch file?
What I'm trying to do is I want to execute rosmon with launch file which has minimum nodes that I need right after boot-up a robot which ubuntu is on is booted up using desktop autostart.
After this process is finished, which means there is roscore and some nodes are running with rosmon on my robot, I want to run more nodes using rosmon in some cases. The reason why I'm trying to use rosmon is the monitoring node function is needed.
Is there any way to start new node after ronmon is once executed?
or Is it possible that I listed up all the nodes that I need on the launch file which will be exectued while booting process and some of nodes are to start and some are not to start?
Hi Max,
I had an issue with some ros nodes that take a considerable time to exit (they write a lot of data to disk during shutdown). By default, they are sigkilled by the rosmon after a small timeout duration.
Searching in the code, I found out exactly what I need (rosmon-stop-timeout
). However, this nice feature is not documented on the ros package page, unless I overlooked it!
As mentioned in #51 it would be nice a have a separate binary package for the rqt plugin.
This would allow to reduce the dependencies of rosmon
when used in a robot without GUI.
Such a separation exists in other ROS packages like grid_map.
I know that this a breaking change, users will lose the plugin when updating, but it may be possible to keep ros-*-rosmon
name for the metapackage that install both the rosmon
utility and the rqt plugin.
Is it possible to add the timestamp of the message in the console output?
Than you can see not only from which node a message comes but also when it comes (and maybe how often).
The printing of the timestamp can be controlled by an option.
Unfortunately, if I start more than 62 nodes, then I don't have the possibility to control the nodes >62 in the command line interface as I can only refer to nodes 0..61 via a-z,A-Z,0-9.
Did you ever think of an command line interface for more than 62 nodes?
Remappings in the launch or group scope are not applied to node topics, the original topics stay unremapped.
Launch file:
<launch rosmon-name="rosmon_uut">
<!-- Test global remapping -->
<remap from="original_test_input" to="remapped_test_input" />
<remap from="original_test_output" to="remapped_test_output" />
<node name="test2" pkg="rosmon" type="test_node.py">
<remap from="~input" to="/original_test_input" />
<remap from="~output" to="/original_test_output" />
</node>
</launch>
The following test succeeds with roslaunch and fails with rosmon:
def test_global_remapping(self):
pub = rospy.Publisher('/remapped_test_input', String, queue_size=5)
wfm = _WFM()
sub = rospy.Subscriber('/remapped_test_output', String, wfm.cb)
time.sleep(1);
self.assertGreater(pub.get_num_connections(), 0)
self.assertGreater(sub.get_num_connections(), 0)
pub.publish('Hello world!')
timeout_t = time.time() + 5
while wfm.msg is None:
rospy.rostime.wallsleep(0.01)
if time.time() >= timeout_t:
self.fail('No reply to test message')
self.assertEqual(wfm.msg.data, 'Hello world!')
sub.unregister()
pub.unregister()
Expected result:
# rostopic list
/remapped_test_input
/remapped_test_output
Actual result:
# rostopic list
/original_test_input
/original_test_output
mon launch reports Substitution error: $(arg traffic_topic_name_generic ): Unknown arg
for the following launch file:
<launch>
<!--****************************************
********** Program Parameters **********
*****************************************-->
<arg name="traffic_topic_name_generic" default="example_name"/>
<!--*********************************
********** Launch Node **********
**********************************-->
<node pkg="package" type="type" name="name" output="screen" >
<rosparam param="topic_names" subst_value="true" command="load">
traffic_topic_name_generic: $(arg traffic_topic_name_generic )
</rosparam>
</node>
</launch>
It seems that the trailing whitespaces after the arg name cause the problem, since the following line works
traffic_topic_name_generic: $(arg traffic_topic_name_generic)
2.0.2 ubuntu 18.04. ros melodic
Hi
I have the version 1.0.10 and want to upgrade to version 2.0.2 and tried to update with
sudo apt-get update
sudo apt-get upgrade
but no update of rosmon appears.
Following the installation from the ROS wiki I get the following message:
ros-kinetic-rosmon is already the newest version (1.0.10-0xenial-20190609-214009-0800).
So I have the newest version from the 1.0 path. Tried this with a Raspberry Pi and with a notebook with Ubuntu.
From my understanding of ROS Index I would expect that the 2.0.2 version is also available for kinetic.
Currently, the rostest integration tests are failing for strange reasons. I suspect that the build server is under high load and our logic in the test publisher/subscriber methods is wrong.
def test_global_remapping(self):
pub = rospy.Publisher('/remapped_test_input', String, queue_size=5)
wfm = _WFM()
sub = rospy.Subscriber('/remapped_test_output', String, wfm.cb)
time.sleep(1);
self.assertGreater(pub.get_num_connections(), 0)
self.assertGreater(sub.get_num_connections(), 0)
pub.publish('Hello world!')
timeout_t = time.time() + 5
while wfm.msg is None:
rospy.rostime.wallsleep(0.01)
if time.time() >= timeout_t:
self.fail('No reply to test message')
self.assertEqual(wfm.msg.data, 'Hello world!')
sub.unregister()
pub.unregister()
Apparently there is a window of opportunity that allows the message to be lost.
Things to try:
time.sleep(1)
mon launch crashed after long run, it's happen 2-3 times within 15 hours. all node inside the mon died.
the error
terminate called after throwing an instance of 'boost::filesystem::filesystem_error'
what(): boost::filesystem::status: No such process: "/proc/1301/stat"
I run ~10 mons with ~20 nodes on PCM-3365 with Intel Atom CPU and 16 GB RAM. and this PC connect to many sensors.
Blocks of the structure
<node name="NODENAME" ...>
<param name="~PARAMNAME" value="VALUE"/>
</node>
work in roslaunch but not in rosmon, while
<node name="NODENAME" ...>
<param name="PARAMNAME" value="VALUE"/>
</node>
works as expected.
According to the ROS naming conventions, the tilde is redundant in this case, as the parameter inside of a node block is already private, but not forbidden.
Whereas roslaunch creates a parameter /NODENAME/PARAMNAME in both cases, rosmon exits with
terminate called after throwing an instance of 'ros::InvalidNameException'
what(): Character [~] at element [14] is not valid in Graph Resource Name [/NODENAME/~PARAMNAME]. Valid characters are a-z, A-Z, 0-9, / and _.
First, let me thank you for rosmon
, it has been a pleasure to use it for several months.
The features to stop and restart a node is quite nice.
In our robot, we need to launch nodes on the fly so, until now, we start a roslaunch
command with a QProcess
. I have tried to replace roslaunch
to rosmon
with --disable-ui
argument but I have some issues.
Permission denied
<rosparam>
entries in the launch file.So before digging into these issues, is it something known that rosmon instances cannot be run inside a rosmon one?
In the fork() documentation (http://man7.org/linux/man-pages/man2/fork.2.html), it states that:
"After a fork() in a multithreaded program, the child can safely
call only async-signal-safe functions (see signal-safety(7)) until
such time as it calls execve(2)."
In node_monitor.cpp, we are using setenv, strdup and other operations that are unsafe since they all internally using malloc(). There could be rare cases memory corruption issues.
More reference to this issue: https://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them
Quoting from #44:
p_programs_launcher: Could not execute '/home/romain/ws/src/p_programs_launcher/src/controller __name:=p_programs_launcher ~running_program:=/head/running_program ': Permission denied
But it occurred that the package
p_programs_launcher
was organized as follow:├── CMakeLists.txt ├── package.xml ├── scripts │ └── controller ├── setup.py └── src └── controller ├── __init__.py └── main.py
So the Python executable
scripts/controller
had the same name as a directory insrc
. I have renamedscripts/controller
toscripts/programs_launcher
and everything worked fine.I am not sure about that issue, if it is an issue on my side with the confusing naming or an issue on
rosmon
side.
Seems that we should search for executable files only and ignore directories.
if my launch xml file has something like , rosmon doesn't fail if abc.yaml doesn't exist. Roslaunch seems to fail and throw an error. Is there a reason for this difference in behavior?
I'm really liking the rosmon workflow compared to roslaunch, especially with the search (#97 ).
I do find myself often performing the Global action F9, followed by selecting a node and unmuting it, to keep track of the progress of output from that particular node only.
I think it would be useful to have a node action which mutes all other nodes and unmutes the selected one exclusively.
Thoughts?
Hello!
I'm loving the tool and would like to do system resource usage monitoring using it. However, I'm encountering difficulties with a .launch file that was fine when parsed by roslaunch. I've searched around and seen that there have been a number of issues with XML parsing that have been resolved, but I haven't seen mine addressed. Please let me know if I missed something!
I'm getting a failure on the first line of the excerpt that " inside include needs name and value", which I looked for in the source code and found here
I'm thinking this might just be because I have default instead of value as a field? Is there a reason this can't be default?
Thanks!
The launch file excerpt :
<arg name="kinect" default="false" />
<arg name="xtion" default="false" />
<arg name="camera_link_pose" default="0.15 0.075 0.5 0.0 0.7854 0.0"/>
<include file="$(find sawyer_moveit_config)/launch/move_group.launch">
<arg name="kinect" value="$(arg kinect)" />
<arg name="xtion" value="$(arg xtion)" />
<arg name="camera_link_pose" value="$(arg camera_link_pose)"/>
<arg name="allow_trajectory_execution" value="true"/>
<arg name="fake_execution" value="false"/>
<arg name="info" value="true"/>
<arg name="debug" value="$(arg debug)"/>
</include>
Hello,
I really like this project. However I have the issue, that the NodeState message does not contain the namespace. In my project I have nodes with the same name, which are only distinguishable by the namespace.
I don’t know if I’m missing something or if this is simply a missing feature. If you want I could create a PR.
I tried to start the following launch file:
<launch>
<node pkg="rosserial_python" type="serial_node.py" name="robby_node">
<param name="port" value="/dev/serial0" />
<param name="baud" value="500000" />
</node>
<node pkg="tf" type="static_transform_publisher" name="sonar_broadcaster" args="0.07 0 0.045 0 0 0 1 base_link sonar 100" />
</launch>
mon exited with segmentation fault. When removing the second node it works.
Hello
Is there a possibility to restart a node which is stopped by an error automatically? Or is this a feature request ;-) ?
Background: My Raspberry terminates serial communication to my hardware board from time to time (don't know why) and I have to restart the node by hand (which is very easy with rosmon). Having a parameter per node which automates that would make this even easier.
Michael
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.