一直被NodleHandle的构造函数的命名空间搞混淆了.例如: ros::NodeHandle node_private("~/"); ros::NodeHandle node_private("~camera_node"); ros::NodeHandle node; ros::NodeHandle node(camera_node); ros::NodeHandle node("/camera_node"); 原来在ROS的官网都有相应的详…
ROS中已经定义了较多的标准类型的消息,你可以用在这些标准类型的消息上再自定义自己的消息类型.这个在复杂数据传输很有用,例如节点和服务器进行交互时,就可能用到传输多个参数到服务器,并返回相应的结果.为了保证例子的完整,将详述每一步. 基本思路和创建talker和listener的例子类似,步骤如下: 建立工作空间workspace(类似于vs下的解决方案,用来管理很多的项目): 建立包package(类似于vs下的项目): 创建msg和srv文件: 编写服务节点和客户节点代码: 利用rosmak…
Linux基础知识与基础命令 系统目录 Linux只有一个根目录,没有盘符的概念,文件目录是一个倒立的树形结构. 常用的目录功能 bin 与程序相关的文件 boot 与系统启动相关 cdrom 与Linux的外设如光盘相关 dev 与设备相关 etc 与相关几乎所有服务器以及软件的配置相关文件 lib 一些程序库 home 使用最多的文件目录,是用户的文件所在目录,每一个用户有一个在home下的文件夹下 命令的基本使用格式 # 命令 -选项 参数1 参数2 command [-option] […
1.安装并添加源sudo gedit /etc/apt/sources.list更新下sudo apt-get update添加 sources.list,如sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'添加 key…
之前被问到一个问题,C#中如何设置android:name这样的属性?我的第一反应是直接setAttribute不就可以了么 SetAttribute(name, value), 可事实上却不行,因为本身并没有什么C#的开发经验,周围也没什么人搞这个,所以就只能通过搜索了.   最后通过搜索发现它需要指定命令空间,详情可参考这里>> SetAttribute(localName, namespaceURI, value) 所以设置android:name的方法就类似这样: xx.SetAttr…
先创建目录结构 src bin obj lib include 1.创建命名空间 创建一个头文件include/head.h; #ifndef _GOOD_H #define _GOOD_H namespace stdtest { extern int val; void func(); } #endif 2.使用自定义名义空间 创建一个头文件src/main.cpp #include <iostream> #include "head.h" //调用命令空间 using…
ROS命令中的单引号`和‘的区别,比如使用`单引号,以下的命令是正确的: $ rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz 而使用‘单引号,以下的命令却是错误的: $ rosrun rviz rviz -d ‘rospack find rbx1_nav‘/sim.rviz 命令可以执行并启动rviz,但是却不能索引到相应的.rviz文件,所以导致不能正确显示相应的配置文件.…
ROS的包编译有两种方法(我知道的),一种是用rosmake,这种方法简单:另一种是用catkin_make,这种方法更方便包的管理和开发.这两种方法都是先建立工作空间workspace(类似于vs下的解决方案,用来管理很多的项目),然后建立包package(类似于vs下的项目),最后利用rosmake或者catkin_make进行编译和运行.学会第一种方式,再去学习第二种就很简单了.源码附在每个小节的后面. 1.rosmake编译包package 1.1.创建工作空间 在开始具体工作之前,首先…
Linux目录基本知识 / 根目录 /bin 存放必要的命令 (binary) /boot 存放内核以及启动所需的文件(引导/自引/启动/开机程序) /dev 存放设备文件 (devices) /etc 存放系统配置文件 /home 普通用户的宿主目录,用户数据存放在其主目录中 /lib 存放必要的运行库 (library) /mnt 存放临时的映射文件系统,通常用来挂载使用. /proc 存放存储进程和系统信息 (process) /root 超级用户的主目录 /sbin 存放系统管理程序 /…
Actionlib是ROS非常重要的库,像执行各种运动的动作,例如控制手臂去抓取一个杯子,这个过程可能复杂而漫长,执行过程中还可能强制中断或反馈信息,这时Actionlib就能大展伸手了. 1.原理 1.1功能 在任何一个比较大的基于ROS的系统,都会有这样的情况,向某个节点发送请求执行某一个任务,并返回相应的执行结果,这种通常用ROS的服务(services)完成.然而,有一些情况服务执行的时间很长,在执行中想要获得任务处理的进度,或可能取消执行任务,Actionlib就能实现这样的功能,它是…
在一些应用中会需要获取master的uri地址,发布的话题,订阅的话题,发布的服务,节点的信息等等.这些功能我们通常可一通过rosnode list, rosnode info, rostopic list, rostopic info, rosservice list和 rosservice info 等命令查询,而这些功能是怎么做到的呢? 这就需要用到Master_API进行查询,ROS官方使用了python来实现(在ros_comm包中),这里我们使用c++来实现这些查询的功能. 1.实现…
可以利用Eclipse集成开发环境进行ROS开发,从而提高研发效率.以色列巴尔伊兰大学的Mr. Roi Yehoshua开设了一门ROS课程,课程2( Lesson 2)讲解了如何利用Eclipse在ROS上进行开发.这里走下总结整理.安装步骤如下: 1. 安装Java8 我们采用Eclipse Neon版本的IDE,所以需要Java8的运行环境,下面为安装Java8的命令,如下所示: sudo add-apt-repository ppa:webupd8team/java sudo apt-g…
ROS入门难,进去之后会是很简单,这是很多人的经验.但是今天安装ROS就吃了闭门羹,安装成功后,回顾发现,关键是操作系统Ubantu14.04没有安装好,一些系统包没有及时更新导致的.这里总结下ROS Jade安装的经验,留他日己用,也希望能帮助别人.安装的基本思路就是,首先安装Ubantu14.04操作,然后再安装ROS系统. 1.安装Ubantu14.04系统 ROS系统运行于Linux系统上,所以我们必须首先安装Ubantu系统.正确安装Ubantu系统是ROS安装成功的关键一步.否则安装…
初始化ROS的catkin工作空间:catkin_init_workspace 编译ROS的catkin工作空间:catkin_make 读取当前catkin工作空间的环境变量:source devel/setup.sh 验证ROS工作空间的环境变量加载成功:echo $ROS_PACKAGE_PATH KDevelop使用: Have you tried starting KDevelop from within a shell where you have sourced your setu…
SV中的module,interface,program,checker,都提供declaration空间,内部定义都local当前的那个scope,相互之间的building block不影响,不识别. package也可以提供一个declaration的空间,可以被其他的building block共享,Package declaration可以被import到其他的building block中,或者package中. (package中不能再包含module,interface,prog…
学习新事物,方法高于技术本身,如果没有把握"BIG PICTURE"的话很难理解进去.通过以下几点进行理解ROS: ROS实际上不是操作系统,他只是一个通信的框架,一个代码管理的架构.任务的时序规划和CPU资源分配工作都是靠LINUX来实现,所以,ROS脱离不了LINUX,ROS依附在LINUX上. 机器人的核心平台是:多传感器和处理器之间的通信,处理器和执行器之间的通信,这些通信必须保持一个统一的时钟,试想如果从传感器传回来的数据时间上不同步,那就谈不上数据融合了. ROS主要解决了…
目录 Overview Example Providing a Plugin Registering/Exporting a Plugin The Plugin Description File Registering Plugin with ROS Package System Querying ROS Package System For Available Plugins Using a Plugin Changes from Pre-Groovy pluginlib Simplified…
ROS软件包开发完成后,需要安装包,如果你用的是catkin创建的工作空间,那么即可使用命令"catkin_make install"完成此项任务.下面介绍其安装的过程: 1.源码准备 准备好需要安装的代码,通常可以使用catkin来创建工作空间,包和编译整个项目.本例子假定工作空间为catkin_ws,包名为package_install.目录如下图所示: 2.编辑CMakeLists.txt 打开package/CMakeLists.txt,在文件末尾添加添加如下的代码: ####…
两台机器同时运行过程中,对于ROS的tf变换,其要求两台机器的时钟要保持一致. 1.查询时间 首先通过以下命令,看两台机器时钟是否有差异.在本机上,查看远程master的机器时间: ntpdate -q other_computer_ip 例如 ntpdate -q 192.168.0.23 或者在终端直接输入date命令可以查询本机的时间: date 2.安装chrony 执行如下命令: sudo apt-get install chrony 3.配置 然后编辑配置文件: sudo gedit…
1.问题 在运行ROS by Example 2--Indigo版本中,运行 smach_viewer,再运行巡逻,命令如下: $ rosrun smach_viewer smach_viewer.py $ rosrun rbx2_tasks patrol_smach.py 出现如下错误: xception : Traceback (most recent call last): File , in __bootstrap_inner self.run() File , in run self.…
安装turtlebot2,场景为:turtlebot2上搭载着一台电脑主机A,该电脑作为主机Master,有自带的电源和3D传感器,roscore在该台机器上启动.pc电脑远程连接A,和A通讯,pc不需要启动roscore,这样就可以在远程pc控制turtlebot2走来走去.摆脱了调试pc/lapbook和turtlebot2放在一起,而带来的测试麻烦. ROS官网已经有相关的教程,可以完成以上提到的使用场景,给上地址: TurtleBot 以indigo版本为例,配置的关键步骤: 1.两台机…
一.开机启动ROS的工作空间的路径设置失败 现象:在教程:http://wiki.ros.org/cn/ROS/Tutorials/CreatingPackage中的第5.1小节,运行以下命令失败: $ rospack depends1 beginner_tutorials 提示错误:[rospack] Error: package 'beginner_tutorials' not found 原因:是因为创建Catkin的Source时失败了,导致catkin工作空间的根路径查找不到.这是由于…
shell的基础知识 一.bash有以下特点: 1.记录命令历史 2.指令和文件名补全 3.别名 alias rm='rm -i' 4.通配符 * 0个或多个字符 ?​匹配一个字符 5 输入输出重定向 输入重定向  <</p> 输出重定向  >​ 6.管道​符   | 二.变量 环境变量PATH:它是Shell预设的一个变量 echo  $PATH​ echo $PWD echo $HOME 系统预设的变量:使用env命令即可全部列出系统预设的环境变量了​,不过登录的用户不同这些环…
1.常用热键 [Tab]它具有“命令补全”与“文件补全”的功能[Ctrl+C]中断执行中的程序组合键[Ctrl+d]键盘输入结束.也可以用来替代 exit 2.Linux 常用编辑器 vi 和 vim vi 编辑器(vim 大同小异) (1)一般模式 [可以 删除,复制,粘贴] (2)编辑模式[可以 删除,复制,粘贴,无法编辑内容,按下i l o O a A r R任何一个健才会进入编辑模式,要回到一般模式按Esc] 3.Linux 目录配置 1.根目录(/) 根目录(/)所在分区应该越小越好,…
一:相关概念: 1:工作区(Working Directory): 就是你在电脑里能看到的目录 2:版本库(Repository): 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库.2.1): Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD.2.2): git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git co…
在linux操作系统中从后台一直运行某个程序的方法,就是使用nohup命令了. 参照网址:http://www.jb51.net/LINUXjishu/189964.html…
本文移到:http://www.phpgay.com/Article/detail/classid/2/id/53.html 1.命名空间的语法: <?php namespace 名称; ?> 例子:<?php namespace blog; ?> 注意:在namespace之前不能有任何输出,就像session_start一样,同一个php文件中可以多个命名空间. <?php namespace blog; class manage{} namespace message;…
node中js的组成部分:ECMAScript核心+全局成员+模块系统成员 浏览器中的js组成部分:ECMAScripts核心+BOM+DOM 常用node命令 cmd中进入REPL环境:直接输入node vscode中打开终端:文件→首选项→快捷键设置→切换集成终端,默认一般是ctri+/ 退出REPL环境:连按两次ctrl+c 使用node命令执行js文件:node js文件路径 快速定位上一次执行的命令:向上箭头↑ 快速补全全路径:tab键 清屏:cls(前提是已经退出node环境)…
这次,聊聊关于「命令行提示符」的相关内容. bash之类的Shell程序是操作Linux所不可缺少的东西.其中bash的提示符也有承担了很重要的作用. 「命令行提示符」的英文是「command prompt」,其中「prompt」有促使,推动的意思,根据这个意思,Shell中的「命令行提示符」就有促使,推动用户输入的意思. (下面的说明以bash为例,bash是Shell程序的一种) 目前的Linux发行版中,提示符一般都像下面这样: [user@host001 /etc]$ 上面这个提示符中包…
1.ros::spin()和spinOnce含义 如果在节点中如果订阅了话题,那么就必须要调用ros::sping()或者ros::spinOnce()函数去处理话题绑定的回调函数,否则该节点将不会调用节点所订阅的所有回调函数来处理接收到的数据.换句话说如果一个节点里面没有订阅话题只有发布话题,那么是可以不需要调用这两个函数的.但是为了方便以后节点添加了订阅消息话题,建议还是加上这两个函数之一.下面是关于这两个函数的讨论: What is the actual meaning of ros::s…