ROS
wccsu1994
这个作者很懒,什么都没留下…
展开
-
ROS:话题编程 订阅者Subscriber的简单实现
1.(1)编写一个C++话题订阅者/** * 该例程将订阅/turtle1/pose话题,消息类型turtlesim::Pose */ #include <ros/ros.h>#include "turtlesim/Pose.h"// 接收到订阅的消息后,会进入消息回调函数void poseCallback(const turtlesim::Pose::Cons...原创 2020-03-06 16:13:01 · 971 阅读 · 0 评论 -
ROS:话题编程 发布者publisher的简单实现
/*** 该例程将发布/person_info话题,自定义消息类型learning_topic::Person*/#include <ros/ros.h>#include "learning_topic/Person.h"int main(int argc, char **argv){ // ROS节点初始化 ros::init(argc, ar...原创 2020-03-06 13:42:55 · 935 阅读 · 2 评论 -
1.ROS创建工作空间
创建一个catkin 工作空间:$ mkdir -p ~/catkin_ws/src //创建一个文件夹$ cd ~/catkin_ws/src //到该文件目录下$ catkin_init_workpace //初始化工作空间即使这个工作空间是空的(在'src'目录中没有任何软件包,只有一个CMakeLists.txt链接文...转载 2018-11-24 13:51:02 · 158 阅读 · 0 评论 -
2.创建一个ROS功能包
创建ROS功能包的命令如下:$ catkin_create_pkg [功能包名称] [依赖功能包1] [依赖功能包n] “catkin_create_pkg”命令在创建用户功能包时会生成catkin 构建系统所需的CMakeLists.txt和package.xml文件的包目录。1,移到工作目录$ cd ~/catkin_ws/src2.创建一个功能包$ catkin_cr...原创 2018-11-26 10:59:30 · 562 阅读 · 0 评论 -
3.修改功能包配置文件(package.xml)
必要的ROS配置文件之一的package.xml是一个包含功能包信息的XML文件,包括功能包名称、作者、许可证和依赖功能包。下面是对每个语句的说明。■ <?xml> 这是一个定义文档语法的语句,随后的内容表明在遵循xml版本1.0。■ <package> 从这个语句到最后</package>的部分是ROS功能包的配置部分。...原创 2018-11-26 11:12:01 · 2108 阅读 · 0 评论 -
4.修改构建配置文件(CMakeLists.txt)
ROS的构建系统catkin基本上使用CMake,并在功能包目录中的CMakeLists.txt文件中描述构建环境。在这个文件中设置可执行文件的创建、依赖包优先构建、连接器(linker)的创建等等,以构建的功能包my_first_ros_pkg为例说明。构建配置文件(CMakeLists.txt)中的每一项如下所示。1.操作系统中安装的cmake的最低版本。由于它目前被指定为版本2.8....原创 2018-11-26 11:37:53 · 3031 阅读 · 0 评论 -
5.编写源代码
在上述(4)CMakelists.txt文件的可执行文件创建部分(add_executable)中,进行了以下设置。add_executable(hello_world_node src/hello_world_node.cpp) 换句话说,是引用功能包的src目录中的hello_world_node.cpp源代码来生成hello_world_node可执行文件。由于这里没有hello_wor...原创 2018-11-26 11:48:31 · 2369 阅读 · 0 评论 -
6.构建功能包
所有构建功能包的准备工作都已完成。在构建之前,使用以下命令更新ROS功能包的配置文件。这是一个将之前创建的功能包反映在ROS功能包列表的命令,这并不是必选操作,但在创建新功能包后更新的话使用时会比较方便。$ rospack profile下面是catkin构建。移动到catkin工作目录后进行catkin构建。$ cd ~/catkin_ws && catkin_m...原创 2018-11-26 11:54:47 · 199 阅读 · 0 评论 -
7.运行节点
如果构建无误,那么将在“~/catkin_ws/devel/lib/my_first_ros_pkg”中生成“hello_world_node”文件。下一步是运行该节点,打开一个终端窗口(Ctrl + Alt + t)并在运行该节点之前先运行roscore。请注意,运行roscore后,ROS中的所有节点都可用,除非退出了roscore,否则只需运行一次。$ roscore最后,打开...原创 2018-11-26 13:10:16 · 538 阅读 · 0 评论 -
ERROR: Cannot load message class for [ros_tutorials_topic/MsgTutorial]. Are your messages built?
这个要打开功能包所在工作空间,我的是~catkin_ws,source /devel/setup.bashrostopic echo /ros_tutorial_msg就可以看到发布的消息了,但是很奇怪为什么会这样,以后找到了原因再更新,未完待续。。。...原创 2018-11-26 19:08:38 · 1129 阅读 · 1 评论 -
使用RViz 仿真 TurtleBot3
TurtleBot3提供虚拟仿真开发环境,即使没有机器人硬件,也可以通过仿真软件里的虚拟机器人进行编程和仿真。有两种方法可以做到这一点,一种是使用ROS的3D可视化工具RViz,另一种是使用3D机器人仿真器Gazebo。注意:TurtleBot3 Simulation 依赖 turtlebot3步骤:安装TurtleBot3 Simulation cd ~/catkin_ws...转载 2018-11-28 10:59:56 · 1534 阅读 · 0 评论 -
什么是urdf 文件
1,Unified Robot Description Format,统一的机器人描述格式2,ROS里一个非常重要的机器人模型描述格式,3,可以解析URDF文件中使用XML格式描述的机器人模型4,ROS同时也提供URDF文件的C++解析器。...转载 2018-12-03 17:50:19 · 1771 阅读 · 0 评论 -
urdf机器人建模(1)
创建一个机器人建模功能包:@ubuntu:~/catkin_ws/src$ catkin_create_pkg mbot_description urdf xacro所有构建功能包的准备工作都已完成。在构建之前,使用以下命令更新ROS功能包的配置文件。这是一个将之前创建的功能包反映在ROS功能包列表的命令,这并不是必选操作,但在创建新功能包后更新的话使用时会比较方便。$ rosp...原创 2018-12-04 09:09:36 · 547 阅读 · 0 评论 -
urdf机器人建模(2)
在urdf文件夹下新建一个文件robot_description.urdf (文件名.urdf)1,用圆柱体创建一个车体模型<?xml version="1.0" ?><robot name="robot"> <link name="base_link"> <visual>转载 2018-12-04 14:29:51 · 346 阅读 · 0 评论 -
urdf构建机器人模型(3)
在launch文件夹下新建一个launch文件,输入以下内容:<launch> <param name="robot_description" textfile="$(find robot_description)/urdf/robot_base.urdf" /> <!-- 设置GUI参数,显示关节控制插件 --> <para...转载 2018-12-04 14:52:07 · 697 阅读 · 0 评论 -
检查urdf模型整体结构
$ urdf_to_graphiz robot_description.urdf(urdf文件)原创 2018-12-04 15:02:27 · 898 阅读 · 0 评论 -
ROS服务编程::1,自定义服务数据--srv文件
ROS中的服务数据可以通过srv文件进行语言无关的定义接口,一般放在srv文件夹,包含请求与问答两个数据域,使用"---"分割开。针对加法运算服务请求,创建一个服务类型的srv文件/catkin_ws/src/my_package/srv/AddTwoInts.srvint64 aint64 b---int64 sum完成服务数据类型的描述后,需要在功能包的配置文件packag...原创 2018-12-18 10:56:10 · 959 阅读 · 0 评论 -
ROS服务编程::2,创建server
#include"ros/ros.h"#include"my_package/AddTwoInts.h"bool add(my_package::AddTwoInts::Request &req, my_package::AddTwoInts::Response &res){ res.sum = req.a + req.b; ROS_IN...原创 2018-12-18 12:00:30 · 488 阅读 · 0 评论 -
ROS服务编程::3,创建Client
#include<cstdlib>#include"ros/ros.h"#include"my_package/AddTwoInts.h"int main(int argc, char **argv){ ros::init(argc, argv, "add_two_ints_client"); if (argc !=3) { ROS_I...原创 2018-12-18 13:37:38 · 326 阅读 · 0 评论