ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Problem with parameter in launch file [closed]

asked 2017-04-14 03:31:25 -0500

mattMGN gravatar image


I am working with a Raspberry Pi and an Arduino on ROS indigo. I wrote this script to launch multiple nodes.

    <node pkg="beginner_tutorials" name="xbox_joy" type=""/>
    <node pkg="joy" name="joy_node" type="joy_node"/>
        <param name="joy_node/dev" value="/dev/input/js1" />
    <node pkg="rosserial_python" name="serial_node" type=""/>
        <param name="port" value="/dev/ttyACM0"/>
        <param name="baud" value="115200"/>

All nodes and parameters work, except the last one : port parameter from serial_node is not taken into account. So I get the message :

process[rosout-1]: started with pid [4606]
started core service [/rosout]
process[xbox_joy-2]: started with pid [4610]
process[joy_node-3]: started with pid [4624]
process[serial_node-4]: started with pid [4625]
  pub = rospy.Publisher('/cmd_vel',Twist)
[ERROR] [WallTime: 1492157910.346003] Error opening serial: could not open port /dev/ttyUSB0: [Errno 2] No such file or directory: '/dev/ttyUSB0'
[serial_node-4] process has finished cleanly

Roscore is looking for port /dev/ttyUSB0, instead the given one : /dev/ttyACM0. Anybody know what I am doing wrong ?



edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by NEngelhard
close date 2017-04-14 09:55:55.848520

1 Answer

Sort by ยป oldest newest most voted

answered 2017-04-14 04:49:26 -0500

NEngelhard gravatar image

updated 2017-04-14 09:55:43 -0500

Let's see: After running your launch file, I checked the parameters:

[/tmp] rosparam list 

So somehow there is a port argument, it's just in the global namespace instead of the local namespace of the node. XML is not python, so indentations have no meaning, the relevant part of your launch file therefore looks like

    <node pkg="rosserial_python" name="serial_node" type=""/>
    <param name="port" value="/dev/ttyACM0"/>
    <param name="baud" value="115200"/>

There is nothing that tells ROS that the port-parameter has something to do with the serial_node. (order within a launch file has also no meaning) Your mistake was to close the node-tag ""/> If you want the parameters to be in your local namespace, move them inside your node-tag:

    <node pkg="rosserial_python" name="serial_node" type="">
        <param name="port" value="/dev/ttyACM0"/>
        <param name="baud" value="115200"/>

And then your parameters will look better:

[/tmp] rosparam list 

So that the parameters are in the right namespaces.

edit flag offensive delete link more


I now understand and it is working ! Thank you very much for this accurate answer.

mattMGN gravatar image mattMGN  ( 2017-04-14 09:01:05 -0500 )edit

Question Tools

1 follower


Asked: 2017-04-14 03:31:25 -0500

Seen: 621 times

Last updated: Apr 14 '17