-
2015-09-23 20:54:23
使用usb摄像头调试时,不想写launch文件,想在rosrun时直接设置参数可以以此为例:
rosrun usb_cam usb_cam_node _video_device:=/dev/video1
更多相关内容 -
4.6.1 rosrun设置参数
2021-03-18 21:44:37ROS入门 4.6.1 rosrun设置参数 《ROS入门-理论与实践》视频教程镇楼 rosrun 在启动节点时,也可以设置参数: 语法: rosrun 包名 节点名称 _参数名:=参数值 1.设置参数 启动乌龟显示节点,并设置参数 A = 100 rosrun...ROS入门 4.6.1 rosrun设置参数
《ROS入门-理论与实践》视频教程镇楼
rosrun 在启动节点时,也可以设置参数:
语法: rosrun 包名 节点名称 _参数名:=参数值
1.设置参数
启动乌龟显示节点,并设置参数 A = 100
rosrun turtlesim turtlesim_node _A:=100
2.运行
rosparam list
查看节点信息,显示结果:/turtlesim/A /turtlesim/background_b /turtlesim/background_g /turtlesim/background_r
结果显示,参数A前缀节点名称,也就是说rosrun执行设置参数参数名使用的是私有模式
-
ROS向节点传递参数的方法总结(rosrun,launch) + (参数服务器,main函数参数)
2019-03-22 19:49:11ROS的节点有很多中调用方式,包括rosrun,launch,直接运行等,向节点内传递参数的方式也有很多,在此做个总结。 左侧专栏还在更新其他ROS实用技巧哦,关注一波? 1. rosrun + 参数服务器传递 ros::init(argc, ...0. 写在最前面
本文持续更新地址:https://haoqchen.site/2019/03/22/send-param2node/
如果觉得写得还不错,可以找我其他文章来看看哦~~~可以的话帮我github点个赞呗。
你的Star是作者坚持下去的最大动力哦~~~
ROS的节点有很多中调用方式,包括rosrun,launch,直接运行等,向节点内传递参数的方式也有很多,在此做个总结。
1. rosrun + 参数服务器传递
ros::init(argc, argv, "imu2txt"); ros::NodeHandle nh("~"); std::string file_name; nh.param<std::string>("file_name", file_name, "./imu_data.txt");
首先在节点初始化之后获取参数服务器的参数,并设置初始值,如上面的程序就是在参数服务器的
~
空间(即节点本身)获取名字为"file_name"
的参数放到std::string file_name
中,默认参数为后面那个。接着就可以rosrun了。下面是命令
rosrun package node _parameter:=value
在我们这里就是
rosrun datatxt imu2txt _file_name:=~/Documents/test.txt
就可以将节点内的参数改为想要的值了。注意: string不需要加双引号,string第一个字符不能是数字
2. roslaunch + 参数服务器传递
同样是上面的例子,我们如果想通过roslaunch来调用的话,可以像下面这样,将参数放在node之间。
<launch> <node name="imu2txt" pkg="data2txt" type="imu2txt" respawn="false" output="screen" > <param name="file_name" type="string" value="/home/night_fury/Documents/record_bags/calibration/imudata_to_wall.txt"/> </node> </launch>
3. rosrun + main参数传递
int main(int argc, char** argv)
main函数有两个参数argc, argv。argc = length(argv),argv[0]是程序的名字,argv[1]到argv[argc - 1]是传递给程序的参数,按空格分割参数后以char指针的形式存储。这是C、C++的特性,跟ros无关,你编写的C++程序也可以这么用。你编写的ros程序甚至可以直接运行,并通过这种方式传递参数,而不用rosrun或者roslaunch。
比如我们常用的map_server、rosbag就是用的这种参数传递方式。
rosrun map_server map_saver -f ~/Documents/test
或者直接找到二进制文件后map_saver -f ~/Documents/test
像上面这样运行程序,那么
argc=3 argv[0]="map_server" argv[1]="-f" argv[0]="test"
你就可以在程序中使用这些参数了。
4. roslaunch + main参数传递
续上,如果使用main参数传递,那在roslaunch应该怎么样呢?如下,使用
args
:<launch> <node name="map_server" pkg="map_server" type="map_server" args="$(find costmap_2d)/test/willow-full-0.025.pgm 0.025" /> <node name="rosplay" pkg="rosbag" type="play" args="-s 5 -r 1 --clock --hz=10 $(find costmap_2d)/test/simple_driving_test_indexed.bag" /> </launch>
参考
http://wiki.ros.org/rosbash#rosrun
喜欢我的文章的话Star一下呗Star
版权声明:本文为白夜行的狼原创文章,未经允许不得以任何形式转载
-
ROS向节点传递参数的方法总结(rosrun,roslaunch) + (参数服务器,main函数参数)
2021-01-26 19:12:05ROS向节点传递参数的方法总结(rosrun,launch) + (参数服务器,main函数参数) https://blog.csdn.net/u013834525/article/details/88744327参考:ROS向节点传递参数的方法总结(rosrun,launch) + (参数服务器,main函数参数)https://blog.csdn.net/u013834525/article/details/88744327
rosrun 向 参数服务器
rosrun package node _param:=value
param前加 "_"
roslaunch 向 参数服务器
使用param标签
<launch> <node name="imu2txt" pkg="data2txt" type="imu2txt" respawn="false" output="screen" > <param name="file_name" type="string" value="/home/night_fury/Documents/record_bags/calibration/imudata_to_wall.txt"/> </node> </launch>
rosrun 向 main()
直接在后边添加
rosrun package node p1 p2 p3
roslaunch 向 main()
在 node标签中,使用 args
<node pkg="ros_tutorials_parameter" type="service_client_with_parameter" name="service_client" args="6 8"> <param name="calculation_method" value="2"/>
<launch> <node name="map_server" pkg="map_server" type="map_server" args="(findcostmap2d)/test/willow−full−0.025.pgm 0.025"/> <node name="rosplay"pkg="rosbag"type="play"args="−s 5 −r 1 −−clock −−hz=10 (find costmap_2d)/test/simple_driving_test_indexed.bag" /> </launch>
-
ubuntu向rosrun运行的cpp文件输入参数的方法(char** argv[])
2021-04-21 17:33:25有时候我们通过rosrun运行的.cpp文件中会打开或保存某个文件,而此时文件名如果直接写入程序里会有些不方便,每次更改文件名都需要再编译一次。。。 最近在对实验的点云数据进行处理时就遇到了这个问题,每个ros包中... -
ROS中rosrun和roslaunch命令的对比
2012-07-30 17:00:34在ROS中运行节点的命令有两个:rosrun和roslaunch。 官网上的解释如下: rosrun allows you to run an executable in an arbitrary package without having to cd (or roscd) there first. roslaunch... -
ROS 节点 和 命令行传参
2016-04-04 12:13:50file和命令行改变的参数,传递给代码中真正使用的参数,注意命令行话题的映射直接进行,不需要在话题前面加_符号 ) 设置 ~param为1.0 ROS使用YAML语法来确定参数的输入。 其他关键字: __name 是为... -
ROS向节点传递参数的方法总结(rosrun,launch) + (参数服务器,main函数参数)...
2019-03-22 19:49:00ROS的节点有很多中调用方式,包括rosrun,launch,直接运行等,向节点内传递参数的方式也有很多,在此做个总结。 左侧专栏还在更新其他ROS实用技巧哦,觉得写得有见解,还不错,关注一波? 1. rosrun + 参数服务器... -
ROS参数服务器,深度解剖(一)
2021-05-16 22:55:25在ROS系统中参数服务器是一个很重要的功能,我们给程序传递初始化参数,可以通过运行节点时命令行传递,也可以通过配置文件传递,配置文件传递又分成几种,第一种:绕开ROS,直接用C++代码以读文件的方式读取...rosrun -
ROS学习笔记(六):ROS服务与参数 命令行总结
2020-06-22 10:50:44roscore:为ROS提供名称服务+rosout+参数服务器 Usage: $ roscore rosnode:用于获取节点信息的ros工具 Usage: $ rosnode再根据提示输入命令行 rosrun:从给定软件包中运行节点 Usage: $ rosrun [package_name] [node_... -
rosrun和roslaunch命令比较
2018-11-08 16:06:01在ros中运行节点的命令有2个,rosrun和roslaunch 官网解释如下: rosrun allows you to run an executable in an arbitrary package without having to cd (or roscd) there first. roslaunch is a tool for ... -
rosrun rqt_reconfigure rqt_reconfigure
2021-04-01 14:00:55rosrun rqt_reconfigure rqt_reconfigure 动态参数调整 -
ROS读取参数文件
2021-12-05 09:45:04目录参数文件读取参数文件使用参数 参数文件 新建参数文件:param.yaml my_param: # hong wai ============================================================ row: 480 col: 640 usb_cam: [1084.483722,0,261.... -
ros -- launch与rosrun工作目录
2019-05-23 18:01:59在launch中node节点有一个cwd参数,按照文档的解释,这个参数可以为ROS_HOME或node。当设置为ROS_HOME时,cwd为ROS_HOME参数指定的位置。当设置为node时就是对应node所在的位置。但是如果你echo $ROS_HOME时会发现这... -
ros创建软件包流程、测试案例以及rosrun和roslaunch运行节点的区别
2020-03-31 22:22:30#include "std_msgs/String.h"//传递的消息类型 #include "sstream" int main(int argc, char **argv)//写ROS程序需要加argc,argv,因为init需要传这两个参数 { ros::init(argc, argv, "talker");//初始化ros,向... -
【ROS】参数服务器
2021-03-11 17:42:15参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据,关于参数服务器的... -
ROS回顾学习(6): launch文件参数集锦及优化
2019-07-22 22:56:121.在ros launch文件中添加gdb编译参数 launch-prefix="xterm -e gdb -ex run --args " 如: <node pkg="mls_map" type="mls_map" name="mls_map" output="screen" launch-prefix="xterm -e gdb -ex run --... -
ROS向节点传递参数的几种方式
2020-07-29 09:35:32ROS的节点有很多中调用方式,包括rosrun,launch,直接运行等,向节点内传递参数的方式也有很多。 1. rosrun + 参数服务器传递 ros::init(argc, argv, "imu2txt"); ros::NodeHandle nh("~"); std::... -
ROS系统——动态修改realsense相机参数方法
2021-03-23 18:02:31然后,新建终端,执行:rosrun rqt_reconfigure rqt_reconfigure命令,启动ROS系统自带的Dynamic Reconfigure软件,在该软件里面修改对应相机的参数。 方法2:(通过命令行修改) 通过roslaunch先发布realsense... -
ROS与Python教程之参数使用
2019-05-29 15:21:57ros中可以使用的参数类型有整数、浮点数、字符串、bool、列表、字典为参数; 参数为字典时有额外的意义,可以当做命名空间使用: /gains/P = 1.0 /gains/I = 2.0 /gains/D = 3.0 #在rospy输出/gains {'P':1.0, 'I':... -
ROS 摄像头参数标定
2021-02-19 15:11:15利用ROS对摄像头参数进行标定 -
ROS向节点传递参数的方法
2020-12-27 11:47:52大致有以下几种方法可以传递参数: rosrun + 参数服务器传递; roslaunch + 参数服务器传递; rosrun + main参数传递; roslaunch + main参数传递. 详细内容可看ROS向节点传递参数 -
相机标定和参数
2019-09-25 14:21:17$rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/camera/rgb/image_raw camera:=/camera/rgb //标定彩色摄像头 $rosrun camera_calibration cameracalibrator.py --size 8x6 --...