针对C++代码,举例说明如下:
可避免重新编辑值,程序中这样写:
假如摄像头序号不定,通过launch文件修改:
int usb_number;
ros::param::get("~usb_number",usb_number);
cout<<"**************************"<<usb_number<<endl;
cv::VideoCapture cap(usb_number);
launch文件,这样写的:
<node pkg="camera_pub" type="camera_pub" name="camera_pub" output="screen">
<param name="usb_number" type="int" value="11"/>
<param name="pub_top" value="$(arg output_topic)"/>
</node>
想要在launch文件中更改usb_number的值,在程序里只需定义变量usb_number,然后再使用语句 ros::param::get(),即可。程序中的“~”的意思表示此参数是私有参数,也就是,在lauch文件中,你把<param.../>写到<node.../>里面那么你的参数就是私有参数。
本文介绍了如何在ROS系统中通过launch文件动态设置C++程序中的摄像头USB编号。通过ros::param::get()函数,程序可以读取launch文件中设定的私有参数~usb_number,实现不重启程序即可调整摄像头设备。这种方法简化了配置过程,提高了灵活性。

被折叠的 条评论
为什么被折叠?



