Command line boolean parameters to ros node
I'm working with ROS melodic and Gazebo 9.9.0 on an Ubuntu 18.04.2 LTS.
I want to get two boolean parameters from command line. To do it, I have this code:
int main(int argc, char **argv)
{
bool doDiagonalSteps = false;
bool checkDiagonalCornerUnBlocked = false;
/**
* We must call one of the versions of ros::init() before using any other
* part of the ROS system.
*/
ros::init(argc, argv, "astar_controller");
/**
* NodeHandle is the main access point to communications with the ROS system.
*/
ros::NodeHandle n;
/**
* Get parameters (if there are parameters to get.)
*/
if (!n.getParam("diagonalSteps", doDiagonalSteps))
doDiagonalSteps = false;
else
{
std::cout << "Diagonal steps: " << std::endl;
}
if (!n.getParam("checkDiagonalStepCorner", checkDiagonalCornerUnBlocked))
checkDiagonalCornerUnBlocked = false;
else
{
std::cout << "Diagonal Corner: " << checkDiagonalCornerUnBlocked << std::endl;
}
When I run this command on terminal:
rosrun nav_astar_nodes astar_controller _diagonalSteps:=true _checkDiagonalStepCorner:=false
I don't get anything on the output.
How can I get a boolean parameter from command line?
I believe this is caused by the fact that
_diagonalSteps
creates a private parameter in the nodes namespace, but you don't create a privateNodeHandle
, which causes the parameters to not be found.I was going to ask you something, but you never answer my questions.
I don't understand what you're trying to say here.
@gvdhoorn is correct, you're not looking in the right namespace in your code