古月居ros21讲
文章平均质量分 54
不动心、
这个作者很懒,什么都没留下…
展开
-
lego-loam和autoware一起使用
一、下载和安装gtsam: 1.下载gtsam的源代码 git clone https://bitbucket.org/gtborg/gtsam.git 2.编译安装gtsam mkdir build cd build cmake .. sudo make install 二、下载lego-loam: 1.建立工作空间 mkdir -p catkin_ws/src cd catkin_ws/src catkin_init_workspace 2.下载源码 git clone https://gitee原创 2021-07-25 14:28:13 · 499 阅读 · 1 评论 -
16.参数的定义与使用方法
1.parameter server 相当于一个全局字典,不同的节点都可以全局访问其中存储的变量名,变量值。 2.创建功能包 依赖选项中除了roscpp、rospy外,还有一个std_srv 3.关于参数的命令 rosparam list 列出当前所有参数 rosparam get param_key 显示某个参数值 rosparem set param_key param_value 设置某个参数值 rosparam dump file_name 保存参数到文件 rosparam load file_原创 2020-08-18 23:29:58 · 422 阅读 · 0 评论 -
15.服务数据的定义与使用
1.定义srv文件 string name uint8 age uint8 age uint8 unknown = 0 uint8 male = 1 uini8 female = 2 --- string result srv数据被三横线分成两个部分,上面是request,下面是respond。 2.在package.xml中添加功能包依赖(和创建消息时的步骤相同) <build_depend>message_generation</build_depend> <ex原创 2020-08-16 22:42:25 · 280 阅读 · 0 评论 -
14.服务端Server的编程实现
1.关于回调函数和ros::spin与ros::spinOnce 消息发布器在一个while里面一直循环发送“hello world”到话题(topic)chatter上。消息订阅器一旦知道chatter上面有data,就会将这data作为参数传入callback函数中,但是此时还没有执行callback函数,而是把callback函数放到了一个回调函数队列中。所以当发布器不断发送data到chatter上面时,就会有相应的callback函数进入队列中,它们函数名一样,只是实参不一样。 那么什么时候才会执原创 2020-08-13 23:48:23 · 717 阅读 · 0 评论 -
13.客户端client的编程实现
C++ 1.ros::service::waitForService("/spawn"); waitForService函数查询系统中是否有名为/spawn的服务,如果没有,就一直等待。 2.ros::ServiceClient add_turtle = node.serviceClient<turtlesim::Spawn>("/spawn") 创建服务客户端,请求名为/spawn的服务。serviceClient应该是模板类型,尖括号中的turtlesim::Spawn是服务的类型。 3.a原创 2020-08-10 22:45:55 · 286 阅读 · 0 评论 -
12.话题消息的定义与使用
1.自定义msg文件 msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码。msg文件存放在package的msg目录下。 msg文件实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下: int8, int16, int32, int64 (plus uint*) float32, float64 string time, duration other msg files variable-length array[] and fixed-length ar原创 2020-08-10 21:03:31 · 371 阅读 · 0 评论 -
11.订阅者subscriber的实现
1.ros::Subscriber pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback); 10是队列长度,和publisher一样,接受到的数据先储存在缓存区,等待节点进行处理。同样先进队列的消息也会先出队列 一旦这个节点接收到名为/turtle1/pose的topic,就会调用回调函数poseCallback。回调函数定义如下: void poseCallback(const turtlesim::Pose::ConstPtr& ms原创 2020-08-08 22:00:38 · 658 阅读 · 0 评论 -
10.发布者publisher的编程实现
1.ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle_vel_pub",10); advertise( ) 返回一个 Publisher 对象。 通过调用对象的 publish( )函数, 你可以在这个topic上发布 message。猜测Publisher 对象应该是从属于节点的。 10是队列长度,当publisher发布频率太快,底层以太网不能迅速响应,所以先将数据放在队列中,相当于一个缓存。原创 2020-08-08 20:41:40 · 440 阅读 · 0 评论 -
9.创建工作空间和功能包
1.工作空间是存放工程开发相关文件的文件夹 src:代码空间(source space)放置功能包。功能包的代码、控制文件、launch文件。 build:编译空间(build space)放置编译过程中间文件。 devel:开发空间(development space)可执行文件、库、脚本 install:安转空间(install space)安装的目标空间。和devel有很大重合。 2.创建工作空间->编译工作空间->设置环境变量->检查环境变量 创建工作空间 mkdir -p cat原创 2020-08-03 22:04:35 · 321 阅读 · 0 评论 -
8.ros命令行的使用
turtlesim是功能包的名字,turtlesim_node和turtle_teleop_key都是功能包里包含的节点。 rqt_graph,基于qt的可视化工具,用来显示计算图。 /turtle1/cmd_vel是turtlesim_node和turtle_teleop_key之间传递的话题 rosnode显示节点信息。rosnode list显示所有节点。rosnode info显示了发布者、订阅者、传递的话题和服务。 rostopic显示话题信息。rostopic list显示话题列表。rosto.原创 2020-08-03 21:01:47 · 204 阅读 · 0 评论