ROS 图像launch 映射 文件

按照ros wiki教程的指导,已经下载了图像(视频)发布接收的代码之后,通过launch file启动这两个节点,并从外部修改代码中的参数。

<launch>
    <node name="image_publisher" pkg="cam_test_own_para" type="video_publisher_para" output="screen">

        <param name="video_source_p" value="$(arg vsource)" />  //remap the parameter video_source_p to vsource which you can input a value to vsource when launch the launch file
        <param name="image_transport" value="compressed" />
    </node>

<!--<node name="image_listener" pkg="cam_test_own_para" type="cam_subscriber_own_para" output="screen">
        <remap from = "/camera/image" to = "/image_publisher/camera/image" />   -->    <!--这个符号在launch file中是注释的意思-->

    <node name="image_listener" pkg="cam_test_own_para" type="cam_subscriber_own_para" output="screen" ns="/image_publisher">
        <param name="image_transport" value="compressed" />
    </node>    
</launch>

node name: 节点的名字,与代码中ros::init()中定义的节点名相同
pkg: 代码所在的package包的名字
type: 代码生成的可执行文件的名字,在CMakeList.txt中有定义
output: 输出到哪里
ns: 节点所在的命名空间

param name=”video_source_p” value=”$(arg vsource)” : 将代码中的参数“video_source_p”映射到命令行的输入参数“vsource”,从命令行通过给vsource赋值传递给代码中的video_source_p变量
param name=”image_transport” value=”compressed” : 为代码中的参数”image_transport“赋值为”compressed“ 在代码中需要。
以上两种方式都是为代码中的变量赋值,好处是改变代码中的某个变量的值后不需要再次catkin_make,就能启动执行。第一种方式经历了2次映射,第一次代码中使用的变量”code_param“映射到launch file中的变量”video_source_p“,第二次launch file中的变量”video_source_p”映射到命令行中的变量”vsource”。第二种方式只进行了第一次映射。

在启动图像发布和图像接收节点时,想把图像源设置成为一个参数可以从launch或者命令行中传入(就是上述的两种方法),无奈如果代码中的节点句柄设置为全局的则参数就传不进去,之后在将节点句柄设置为私有的nh(“~”)之后外部参数可以传入,但设置为私有节点句柄之后节点发布的话题都会加上节点名前缀”/image_publisher”,所以在订阅该话题的节点中需要标明具体路径,否则接收不到该节点发布的图像话题。方法有4种:
1.在接收图像的代码中,订阅的话题路径写全,即在原有的基础上也加上前缀”/image_publisher”
2.用rosrun分别启动两个节点,在启动接收节点时在命令行将接收的话题重映射:

rosrun image_transport_tutorials my_subscriber /camera/image:=/image_publisher/camera/image

或命名空间重映射

rosrun image_transport_tutorials my_subscriber __ns:=/image_publisher

3.在launch file中将接收的话题名字映射到加了前缀的话题名字上(上述代码中注释部分)
4.在launch file中将接收话题的节点通过赋值ns变量放到同一命名空间下。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值