电话+V:192606-48052 ,欢迎咨询小龟影视源码对接,[python实用课程],[C++单片机原理],[C#、PHP网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]
1直接下载zip文件
2通过git下载并管理源码
1注册github账号,查找项目源码URL
2安装版本控制工具git,创建本地库
3安装TortoiseGit‘,获取代码
下载zip文件
直接在右侧点击downloadzip即可。
1查找目标源码的githubURL
首先,你要有一个github的账号.........
然后,在github中搜索对应的项目名称,然后在右边就可以看到URL了:
2安装git,创建本地仓库
为了存放源码,首先需要安装版本控制工具git。
登录官网:http://git-scm.com/download/
找到对应版本下载后安装即可。
安装完成后,进入想要存放源码的文件夹,右键单击gitinithere初始化仓库
单击后,当前的目录再次右键会出现提示
3安装小乌龟TotoiseGit,下载源码
下载安装文件,注意看下说明啊!上面的才是安装文件,下面列表里面的是语言包!别下载错了,
安装完,在前面的目录中(任意目录文件下也可以,因为前面以及锁定了代码库的位置)
点击右键TortoiseGit的pull从远程拉取一份代码:
然后在URL中填入github上面的URL就可以了。
13.编写tf2侦听者节点(C++)
描述:本教程将介绍如何使用C++编写一个能够通过tf2获取坐标系变换消息的tf2侦听者节点。
教程级别:入门
在前一个教程中,我们创建了tf2广播者节点来发布小乌龟的位姿到tf2。本教程将创建tf2侦听者节点以开始使用tf2坐标变换消息。
13.1如何创建tf2侦听者节点
使用前两个教程中创建的learning_tf2_cpp软件包,首先进入存放C++源代码的~/dev_ws/src/learning_tf2_cpp/src子目录,运行以下命令创建tf2侦听者节点的源代码文件turtle_tf2_listener.cpp:
在文本编辑器中,将以下代码复制到该文件中,并保存:
13.1.1代码说明
首先导入需要用到的库/模块:
tf2发布的坐标变换信息带有时间戳,因此需要包含geometry_msgs的TransformStamped消息类型头文件transform_stamped.hpp。本节点需要计算turtle1和turtle2两个坐标系的坐标差值,因此需要使用Twist消息类型,包含geometry_msgs的Twist消息头文件twist.hpp。ROS2中,ament_cmake软件包都依赖C++客户端库rclcpp,因此需要包含该库的头文件。本节点需要侦听turtle1的坐标消息,因此需要导入tf2_ros软件包中的TransformListener类和Buffer类,包含这两个类的头文件。此外,还需要处理坐标变换异常的Exception类,包含其头文件。由于本节点需要生成新的小乌龟turtle2,需要调用turtlesim软件包的Spawn服务,导入spawn.hpp模块。上述库/模块/类的导入也代表了该节点的依赖关系,需要将这些依赖包添加到package.xml和CMakeLists.txt文件中。
接着创建了用于侦听turtle1位姿消息的FrameListener节点类,该类继承自rclcpp客户端库的Node类。在FrameListener类中定义了两个函数:一个是公共构造函数,指定节点名称turtle_tf2_frame_listener;申明和获取target_frame参数;创建TransformListener类对象transform_listener_;创建用于生成新小乌龟服务的客户端,并检查服务是否可用;创建turtle2的速度指令发布者对象变量publisher_;以1hz的频率调用on_timer()回调函数。
回调函数on_timer()负责执行turtle1和turtle2两个坐标系之间的坐标变换,并据此向turtle2发布速度指令以对turtle1进行跟随。在该函数中,获取要进行坐标变换的两个坐标系,调用lookupTransform()方法查找坐标变换,根据坐标变换结果计算turtle2的线速度和角速度,然后向turtle2发布速度指令消息。此回调函数的调用频率为1hz,意味着每秒进行一次坐标变换和计算、发布turtle2的速度指令。
最后是定义main()函数。初始化rclcpp客户端库,实例化FrameListener节点对象,旋转节点以调用回调函数,关闭rclcpp客户端库。
13.2构建软件包并运行tf2侦听者节点
编写好C++代码后,在构建和编译该软件包之前,需要编辑learning_tf2_cpp软件包的package.xml和CMakeLists.txt文件,填写软件包描述、许可证、作者等信息,添加相应依赖包和可执行文件等。具体步骤请参考相关教程。
如果已完成前面的教程“在ROS2中编写tf2静态广播者节点(C++)”,则package.xml文件不用修改;在CMakeLists.txt文件中,添加本教程的可执行文件,并在install(target下面添加一行。
由于需要同时运行turtlesim软件包的turtlesim_node、learning_tf2_cpp软件包的turtle_tf2_broadcaster和turtle_tf2_listener等多个节点,需要通过启动文件组合运行这些节点。在上一教程中创建的launch子目录下为本教程创建learning_tf2_demo.launch.py启动文件,具体命令如下。
将以下代码复制到启动文件中,并保存:
完成上述工作后,构建编译软件包。进入工作空间dev_ws的根目录,并运行以下命令:
编译成功后,需要对该工作空间的安装脚本进行source,命令为:
现在可以运行刚才创建的learning_tf2_demo.launch.py启动文件了,具体命令为:
这样就会打开一个名为Turtlesim的窗口,里面有两只小乌龟。小乌龟turtle2会沿着一条弧形路径靠近小乌龟turtle1。
13.3检查运行结果
要查看本节点是否成功运行或有效,只需要在新终端中运行turtlesim软件包的turtle_teleop_key可执行文件,通过键盘上F键周围的8个字母键和箭头键控制小乌龟的旋转和移动,命令为:
确保运行turtle_teleop_key节点的终端窗口处于活动状态,并通过相应字母键和箭头键移动第一只小乌龟turtle1,这样就会看到第二只小乌龟turtle2会跟随turtle1。
现在可以使用tf2_ros软件包的tf2_echo可执行文件来检查两只小乌龟的位姿是否正在真实地被广播到tf2,命令分别为:
应该会显示第一只乌龟的位姿,如下所示:
此时继续移动turtle1,小乌龟turtle2正在跟随,turtle2的位姿信息也会一直发生变化。
还可以对turtle1和turtle2两个坐标系的坐标变换进行回显,请运行以下命令:
在驱使turtle1移动而turtle2在进行跟随的过程中,会获得如下所示的输出:
电话+V: 192606-48052
机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。