素材巴巴 > 程序开发 >

关于ROS运行小乌龟中的一些问题说明---话题

程序开发 2023-09-04 22:53:23

关于ROS运行小乌龟中的一些问题说明
-----话题

注:PPT来源于古月居

建立工作空间

建立一个catkin_ws文件夹 catkin_ws 下建立一个src文件夹
在src 目录下运行 catkin_init_workspace在这里插入图片描述
出现Cmake文件
切换到catkin_ws 目录下 运行编译命令
$ cd ~/catkin_ws/
$ catkin_make
在这里插入图片描述
自动生成2个文件夹
输入
source devel/setup.bash 建立环境变量

echo $ROS_PACKAGE_PATH
检查环境变量

在这里插入图片描述

建立功能包

到此工作空间建立完毕,下面建立功能包
在这里插入图片描述

建立功能包后,出现一个文件夹
然后编译 catkin_make (在catkin_ws下)
设置变量
source ~/catkin_ws/devel/setup.bash
或者在home目录下 Ctrl+H 打开隐藏文件
在这里插入图片描述
在bashrc中加入最后一行代码,(根据自己的路径自行更改代码)

编译代码

这里假设你已经建立了工作空间
将源代码放入功能包下的src文件
我的cpp文件命名为 dxp.cpp
代码如下:

#include
#include

int main(int argc ,char **argv)
{
//ros节点初始化
ros:: init(argc,argv,“velocity_publisher”);
/ /创建句柄
ros::NodeHandle n;
ros::Publisher turtle_vel_pub=n.advertise("/turtle1/cmd_vel",
10);

ros::Rate loop_rate(10);
int count =0;
while (ros::ok)
{

geometry_msgs::Twist vel_msg;
vel_msg.linear.x=0.5;
vel_msg.angular.z=0.2;
turtle_vel_pub.publish(vel_msg);
ROS_INFO(“Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]”,
vel_msg.linear.x, vel_msg.angular.z);
loop_rate.sleep();
}

return 0;

}
在这里插入图片描述

接下来就是编译代码,但是在编译代码前,我们需要设置一些东西

在这里插入图片描述
在如图所示的目录下的Cmakelist 文件中,加入
add_executable(dxp src/dxp.cpp)
target_link_libraries(dxp ${catkin_LIBRARIES})
第一行代码的函数的参数(不用逗号区分),第一个是生成的可执行文件的文件名称 第二个为源代码名称
第二行代码将生成的可执行文件与库链接 ,这里的名字必须为第一个函数生成的可执行文件的名字,不然找不到这个文件
接下来在输入catkin_make (在catkin_ws 目录下),程序就会编译,链接
在这里插入图片描述

验证

运行ros系统 输入roscore
然后运行乌龟节点
rosrun turtlesim turtlesim_node
乌龟节点名称为turtle1。因为乌龟在ros系统里已经配置好了,监听话题名为turtle1/cmd_vel 的内容,所以在配置的时候配置成如下代码:
ros::Publisher turtle_vel_pub=n.advertise("/turtle1/cmd_vel",
10);
运行程序节点 rosrun learning_topic dxp (因为最终生成的是dxp的文件)
虽然节点名称命名为velocity_publisher,单数不能输入节点名称 ,运行的是文件
在这里插入图片描述


标签:

上一篇: AngularJS技术使用经验-达观数据 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。