How to pass topic names as input argument in the command line terminal?
Hello ! I have a problem that states "Read a rosbag, to parse a topic, that is passed as an input argument" How do I pass the input argument using "rosrun" in the command line terminal?
My code snippet:
#include <ros/ros.h>
#include <sensor_msgs/PointCloud2.h>i
#include<tf/tfMessage.h>
using namespace std;
void topicCallBack(const sensor_msgs::PointCloud2::ConstPtr&msg)
{
cout<<"Reading message of type PointCloud2\n"<<Header is:"<< msg->header;
if(msg->width)
cout<< "\nInpoint Cloud\nwidth is"<<msg->width;
//THIS LINE WILL NOT WORK AS MSG IS OF TYPE POINT CLOUD
if(msg->transforms.transform.translation)
cout<< " reading message of type TF\n";
}
int main(int argc, char **argv)
{
ros::init(argc, argv,"parser");
ros::NodeHandle nh;
//intializing the subscriber
ros::Subscriber sub = nh.subscribe("/camera/depth/points",1000, topicCallBack);
ros::spin();
return 0;
}
Here I have given my topic name as "/camera/depth/points" which publishes the message of type sensor_msgs/PointCloud2. But in my command line terminal, if I pass the topic name as "/tf", how do I ask it to publish the message of type tf/tfMessage because the subscriber is of type PointCloud2? In total, I have three topics that publish messages of type PointCloud2, tf, odom messages. But I am not able to see, how to pass different topic names in the command line argument and publish the respective message type Thanks!
Asked by Joy16 on 2016-12-18 14:55:58 UTC
Answers
Reading command line parameters is explained in the ROS CPP Tutorial on parameters. To give my_param
the value val
, use:
rosrun package node _my_param:=val
Asked by Wilco Bonestroo on 2018-12-16 15:19:14 UTC
Comments
So: what have you tried yourself, what didn't work, what did you expect would happen and what are your hypotheses? We're not here to do your homework for you. We will gladly help you solve problems you encountered while trying to solve this yourself however.
Asked by gvdhoorn on 2016-12-18 15:44:12 UTC
Is this a duplicate of How to pass topic name as the input argument using rosrun?
Asked by gvdhoorn on 2016-12-18 15:44:57 UTC
@gvdhoorn I have edited my details adding my work. Yeah, I am sorry I forgot to delete that question. Removed the older question now. Thanks!
Asked by Joy16 on 2016-12-18 21:27:24 UTC