【ROS基础】ROS_c++ 语法记录

系列文章目录

【ROS基础】Linux 命令行
【ROS基础】.launch 文件语法记录
【ROS基础】CMakeLists.txt 文件语法记录
【ROS基础】Package.xml 文件语法记录
【ROS基础】ROS_c++ 语法记录



前言

很多 c++ 语法特性太多,自忖不可能完全记得住,本文用于记录练习 SLAM 过程中收获的 c++ 知识点。

1、main 函数入口参数 argc 、argv

int main(int argc, char** argv) //or
int main(int argc, char*  argv[]) //or
int main(int argc, char   argv[][])
  • argc :整数,用来统计你运行程序时,送给main函数的命令行参数的个数。
  • argv :指针数组,用来存放指向你的字符串参数的指针,每一个元素指向一个参数。
  • argv[0] :指向可执行文件的全路径名。
  • argv[1] :指向在命令行中执行程序名后的第 1 个字符串。
  • argv[2] :指向执行程序名后的第 2 个字符串。

注:数组名后加方括号,相当于 * 的一层解引用。


2、ros::NodeHandle::param()

官方参考页:http://docs.ros.org/en/kinetic/api/roscpp/html/classros_1_1NodeHandle.html
函数原型:

template<typename T >
bool ros::NodeHandle::param	(const std::string & param_name,
							 T & param_val,
							 const T & 	default_val) const

第1个为输入参数:param_name, 从服务器中查找名为param_name的参数;
第2个为输出参数:param_val,将从参数服务器中找到的、名为param_name的参数的参数值赋给param_val
第3个为输入参数:若在服务器中没有找到param_name,则将第3个默认参数default_val赋值给第2个参数param_val.
举例:

#define DEFAULT_TYPE "omni"
#define DEFAULT_TYPE_VERIFY true
    
string type;
bool type_verify;

ros::init(argc, argv, "tianbot_core");
ros::NodeHandle nh("~");

nh.param<std::string>("type", type, DEFAULT_TYPE);
nh.param<bool>("type_verify", type_verify, DEFAULT_TYPE_VERIFY);

3、ROS 节点命名空间在 C++ 中的如何实现

// launch 文件中 ns==“node_namespace”

ros::init(argc, argv, “node_name”); // node name

ros::NodeHandle n; //n 命名空间为/node_namespace

ros::NodeHandle n1(“sub”); // n1命名空间为/node_namespace/sub

ros::NodeHandle n2(n1,“sub2”);// n2命名空间为/node_namespace/sub/sub2

ros::NodeHandle pn1(~); //pn1 命名空间为/node_namespace/node_name

ros::NodeHandle pn2(~sub”); //pn2 命名空间为/node_namespace/node_name/sub

ros::NodeHandle pn3(~/sub”); //pn3 命名空间为/node_namespace/node_name/sub

ros::NodeHandle gn(/global”); // gn 命名空间为/global

node_name 的含义:

node_name = node_namespace + nodename

3、ros::spin()

ros::spin()不会返回,直到节点被关闭,或者调用ros::shutdown(),或者按下Ctrl+C


总结

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值