ros学习3~对应16-19

rosparam 用来和参数服务器进行交互,其指令如下

        rosparam list  显示当前有哪些参数

        get <参数名> 获得参数值

        set <参数名> <参数值> 设置参数

        dump <文件名> 保存参数文件

        load <文件名> 读取文件

        delete <参数名> 删除参数

在cpp文件中可以采用ros::param::<命令>来获得参数

ros::param::get(<参数名>,<变量名>)//将参数的值保存到变量
ros::param::set(<参数名>,<变量名>)//将变量的值赋给参数

可以采用这种方法和roslaunch结合使用。

=================================================================================================

tf —— ros坐标管理系统

TF功能包主要用来记录,计算各个节点的坐标。其采用广播TF变换和监听TF变换来实现。

展现方式多种,可有:

tf rosrun tf view_frames //显示TF坐标树(坐标变换关系)

tf tf_echo <节点1> <节点2> //显示两个节点的坐标变换情况

rosrun rviz rviz -d ‘rospack find <包>’ <路径> //rviz显示

广播器:用来向外发送位姿矩阵,一般这部分都会放在回调函数中,利用监听来获得位姿信息。

http://wiki.ros.org/tf/Tutorials/Writing%20a%20tf%20broadcaster%20%28C++%29

#include <ros/ros.h> //头文件
#include<tf/transform_broadcaster.h> //头文件


int main(int argc, char** argv)
{ 
    ros::init(argc, argv, <节点名>);//节点初始化
    ros::NodeHandle n;
    tf::TransformBroadcaseter <广播器名>;//创建广播器
    tf::Transform <tf数据名>;//创建一个数据
    <tf数据名>.setOrigin(tf::Vector3(<x赋值>,<y赋值>,<z赋值>));//对t进行赋值
    tf::Quaternion q; //定义 四元数
    q.setRPY(<绕x轴角度>,<绕y轴角度>,<绕z轴角度>);//绕轴旋转角度赋值
    <tf数据名>.setRotation(q);//四元数赋值
    <广播器名>.sendTransform(tf::StampedTransform(<tf数据名>,ros::time::now(),<坐标系名a>,<坐标系名b>));//对tf数据进行广播,需要指定:<tf数据名>(位姿矩阵是什么),ros::time::now()(时间戳,now就是最新的),位姿矩阵是哪两个坐标系的。
    return 0;
}

监听器:用来接收位姿矩阵的,

#include <ros/ros.h>
#include <tf/transform_listener.h>
int main(int argc, char** argv)
{
    ros::init(argc, argv, <节点名>);//创建节点
	ros::NodeHandle n;
    tf::transformListener <监听器名>;
    ros::Rate rate(10.0);
    while(node.ok())
    {
        tf::StampedTransform <tf坐标系名>;
        try
        {
            listener.waitForTransform(<坐标系名a>, <坐标系名b>,ros::Time(0), ros::Duration(3.0));
			listener.lookupTransform(<坐标系a>,<坐标系名b>,ros::Time(0), <tf坐标系名>);
        }
        catch(tf::TransformException &ex) 
		{
			ROS_ERROR("%s",ex.what());
			ros::Duration(1.0).sleep();
			continue;
		}
        rate.sleep();


    }
    return 0;
}

lookupTransform()计算两个坐标系的关系,从a到b的转换。
transformPoint(<名称>,<坐标a>,<坐标系名b>);将a坐标系下的坐标,变换到b坐标系下

refer:https://blog.csdn.net/Start_From_Scratch/article/details/50762293

ros::Time(0)是实时运算,但是因为计算延时不能达到now()的程度

================================================================================================

roslaunch 启动文件,其功能是可以启动多个节点,并且缺省启动roscore,结合rosparam可以对节点的参数进行设置。

1、根元素

<launch>
</launch>

2、节点

 <node pkg=<功能包名> type=<可执行文件名> name=<节点运行名称> />

上面3个是必须参数,还有很多可选参数。

args = "" 将参数传递给节点

respawn="true"如果节点挂了,就自动重启

required="true"如果节点终止,则关闭runlaunch

ns="" 命名空间

output="log|screen"输出模式

……

3、param与rosparam

rosparam用来读取参数列表

<rosparam command="load" file="$(find pkg-name)/example.yaml" /> 读取pkg-name目录下的ymal文件:

example.yaml:
A: 123
B: "hello"
group:
  C: 456
  D: "hello"

<rosparam command="delete" param="my/param" /> 也可以用来删除参数。

param 一个参数

<param name="publish_frequency" type="double" value="10.0" />

 arg:局部变量  $(arg-name)=arg-value",进行调用

<arg name="arg-name" default="arg-value">

<node name="" pkg="" type="" args=$(name)/>  

remap:重命名

<remap from=<资源名a> to=<资源名b>>

将资源从a命名为b

include:包括其他文件的launch

<include file=<文件路径>>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值