clearpathrobotics / robot_upstart

ROS package of helper functions related to bringing up roslaunch on system startup.
BSD 3-Clause "New" or "Revised" License
193 stars 96 forks source link

Port permission issues. #42

Closed shoemakerlevy9 closed 7 years ago

shoemakerlevy9 commented 7 years ago

Hi, I am seeing the following error when I use robot_upstart to launch my code.

Failed to open port: Permission denied

This error is in reference to the UART port that is used to communicate with the motor controllers. It appears that the service that robot_upstart spawns doesn't have the same permission level as the equivelent roslaunch service. How do I grant the robot_upstart service super user permisions?

shoemakerlevy9 commented 7 years ago

Sorry, I'm blind evidentally. Documentation says:

It’s important to understand how permissions work robot_upstart:

The upstart job invokes its jobname-start bash script as root.

The script sets up environment variables, and then uses setuidgid to execute roslaunch as an unprivileged user. This is by default the user who ran the install script, but it can also be specified explicitly via a flag.

The roslaunch which executes does not have its user’s group memberships. This means that it will not have access to serial ports with the dialout group, or locations in /var/log owned by root, etc. > Any filesystem resources needed by your ROS nodes should be chowned to the same unprivileged > user which will run ROS, or should set to world readable/writeable, for example using udev.