在src文件下新建一个.cpp写入以下代码
// 头文件包含#include
修改.txt文件
add_executable(turtle_tf_listener src/turtle_tf_listener.cpp)target_link_libraries(turtle_tf_listener ${catkin_LIBRARIES} )
编译: 在.中添加以下代码:
运行
.
效果
一般一步实现了前面例子的乌龟跟随
运行
分析是跟着跑还是跟着跑?
添加一个坐标系 为什么要添加坐标系?操作小记
在src//src下创建文件.cpp,写入以下代码:
#include
在.txt中添加如下代码:
add_executable(frame_tf_broadcaster src/frame_tf_broadcaster.cpp)target_link_libraries(frame_tf_broadcaster ${catkin_LIBRARIES})
编译:
在.中添加如下代码:
运行.
运行命令查看tf树:
此时,操作键盘控制乌龟移动,发现跟之前的行为并没有什么区别
在.cpp文件中做以下修改:
try{listener.waitForTransform("/turtle2", "/carrot1", ros::Time(0), ros::Duration(10.0));listener.lookupTransform("/turtle2", "/carrot1", ros::Time(0),transform);}
重新编译运行,查看效果跟之前的区别
之前,我们创建了一个固定关系的坐标系,它相对于父级是不会变化的 。现在创建一个动态的坐标系
修改.cpp中对应的代码:
while (node.ok()){transform.setOrigin( tf::Vector3(2.0*sin(ros::Time::now().toSec()), 2.0*cos(ros::Time::now().toSec()), 0.0) );transform.setRotation( tf::Quaternion(0, 0, 0, 1) );br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "turtle1", "carrot1"));rate.sleep();}
编译运行,观察现象
tf和时间操作小记
打开.cpp,原来代码为:
ros::Time(0)参数指的就是获取当前最新的转化关系,将代码做如下修改:
- 工蜂在蜂群中有什么作用?
- vscode调试HTML的js文件
- 计算机工作对身体有害吗,长期在电脑前工作对孕妇有影响吗
- 联合办公WeWork在香港做装修,空间设计灵感源自城市街景
- 2030年世界杯在哪里举行 2030世界杯举办时间和地点
- 「年度总结」在字节跳动混了两年,然后呢?
- 关于Python的animation在动画中更新quiver绘制的动图中箭头的位
- 【UE5】9-16视域时画面拉伸
- 农村创业的好项目
- 吞噬电影在线观看老鼠 吞噬电影在线观看完整版