ros

ROS功能包

醉酒当歌 提交于 2019-12-28 13:31:17
ROS package介绍 package是什么呢? 指的是一种特定的文件结构和文件夹组合。通常将实现同一个具体功能的程序代码放到一个package中,比如实现相机数据采集这一功能 文件结构 CMakeLists.txt: 定义package的包名、依赖、源文件、目标文件等编译规则,是package不可少的成分; package.xml: 描述package的包名、版本号、作者、依赖等信息,是package不可少的成分 ; src/: 存放ROS的源代码,包括C++的源码和(.cpp)以及Python的module(.py) ; include/: 存放C++源码对应的头文件 ; scripts/: 存放可执行脚本,例如shell脚本(.sh)、Python脚本(.py) ; msg/: 存放自定义格式的消息(.msg) ; srv/: 存放自定义格式的服务(.srv) ; models/: 存放机器人或仿真场景的3D模型(.sda, .stl, .dae等) ; urdf/: 存放机器人的模型描述(.urdf或.xacro) ; launch/: 存放launch文件(.launch或.xml) 通常ROS文件组织都是按照以上的形式,这是约定俗成的 命名习惯 ,建议遵守。以上路径中,只有 CMakeLists.txt 和 package.xml 是 必须 的

ROS launch启动文件

若如初见. 提交于 2019-12-28 02:01:53
目录 启动文件(launch) 创建测试实例 创建启动文件(.launch文件) node标签的属性 pkg="package_name" type="node_type" name="node_name" ns="namespace" (可选) output="log|screen"(可选) respawn="true"(可选, 默认: False) respawn_delay="30" (可选, 默认0) required="true"(可选) Launch-prefix=“command-prefix” node标签的元素 remap param 启动参数(argument) 参数服务器(parameter) 启动文件(launch) 下面的命令可以启动单个节点(首先需要 roscore 运行节点管理器) rosrun package_name executable_file_name 但是如果是比较大型的项目需要启动许多节点,使用rosrun命令显然效率太低,幸好ros提供了同时启动节点管理器(master)和多个节点的途径。 创建测试实例 创建工作空间 mkdir -p ~/test/src //工作区目录 cd ~/test/src catkin_init_workspace //初始化工作区 cd .. / catkin_make 创建功能包( 在~/test

Ubuntu 16.04安装完ROS kinetic安装catkin出现( catkin : 依赖: python-catkin-pkg 但是它将不会被安装)错误解决办法(亲测有效)

和自甴很熟 提交于 2019-12-28 01:38:21
Ubuntu 16.04安装完ROS kinetic安装catkin出现( catkin : 依赖: python-catkin-pkg 但是它将不会被安装)错误解决办法 在Ubuntu 16.04下源码安装Catkin 具体步骤: 1.终端输入,下载源码 ~$ sudo apt-get install git ~$ git clone https://github.com/ros/catkin 2.安装依附项 ~$ sudo apt-get install cmake python-catkin-pkg python-empy python-nose python-setuptools libgtest-dev build-essential 3.创建工作空间及安装 cd catkin/ && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release …/ && make && sudo make install 现在成功安装不会出项问题 来源: CSDN 作者: bloomerOAO 链接: https://blog.csdn.net/qq_42744739/article/details/103738807

DefaultRobotHWSim::initSim()详解

梦想的初衷 提交于 2019-12-28 00:52:35
DefaultRobotHWSim::initSim函数详解 DefaultRobotHWSim::initSim() 源码 (加了注释) 对源码进行功能分块解读 DefaultRobotHWSim::initSim() 源码 (加了注释) bool DefaultRobotHWSim :: initSim ( const std :: string & robot_namespace , ros :: NodeHandle model_nh , gazebo :: physics :: ModelPtr parent_model , const urdf :: Model * const urdf_model , std :: vector < transmission_interface :: TransmissionInfo > transmissions ) { // getJointLimits() searches joint_limit_nh for joint limit parameters. The format of each // parameter's name is "joint_limits/<joint name>". An example is "joint_limits/axle_joint". const ros :: NodeHandle

如何ros仿真系统如何和实物产生联系

点点圈 提交于 2019-12-27 01:27:01
我们要把这条轨迹发给机械臂的控制器,如果你使用的是类似UR、ABB这种工业机械臂的话,控制器都是配套的,只需要在示教器上做一些TCP端口的配置,就可以接收轨迹数据了,后续的底层控制算法和电机驱动就不需要我们关心了,完善的控制器都会帮我们实现 不管你用的控制器是MCU、树莓派还是PC,总会有和外界通信的方法,比如常见的串口、网络等,所以第一个接收控制数据的方法就是通过任一媒介,将轨迹数据发送到控制器上,具体实现可以参考 ros_serial、ROS-I Simple Message功能包或串口、 socket通信 的编程方法。 在ROS环境下,如何驱动真实的机器人? 来源: CSDN 作者: qq_43641886 链接: https://blog.csdn.net/qq_43641886/article/details/103719899

ros不同订阅方式的区别

橙三吉。 提交于 2019-12-26 13:41:08
ros不同订阅方式的区别 ros话题不同的订阅方式有一些不同,适合不同的功能需求 。 Ros:spin() 和 ros::spinOnce() 区别 ros:spin() 和 ros::spinOnce()为单线程订阅方式。 Ros:spin() 这种方式程序运行到这一句时就会卡在这,等待发布节点发布消息。例如: # include <move_base/move_base.h> int main ( int argc , char * * argv ) { ros :: init ( argc , argv , "move_base_node" ) ; tf :: TransformListener tf ( ros :: Duration ( 10 ) ) ; move_base :: MoveBase move_base ( tf ) ; ros :: spin ( ) ; return ( 0 ) ; } ros::spinOnce() 这种方式是循环执行,代码运行到这一句会查询是否有订阅的消息发布出来,如果有则执行相应的回调函数,若无则执行接下来的代码。例如: # include <move_base/move_base.h> int main ( int argc , char * * argv ) { ros :: init ( argc , argv , "move

ROS学习笔记(一)

三世轮回 提交于 2019-12-26 02:10:44
ROS学习笔记(一) 一、版本选择 1.一般选择linux ubuntu作为安装的环境,每个版本的ubuntu要安装的ROS版本也不同,参考如下: ROS版本 Ubuntu版本 ROS Kinetic Kame Ubuntu 16.04 ROS Jade Turtle Ubuntu 15.04 ROS indigo igloo Ubuntu 14.04 ROS Hydro Medusa Ubuntu 12.04 LTS ROS Groovy Gakaoagos Ubuntu 12.04 ​ 2.刚入门选择版本不要选择最新的也不要选择很旧的,如果出现错误不容易找到答案。推荐: Ubuntu 16.04 ROS Kinetic Kame 二、Ubuntu安装 1.Ubuntu系统:直接安装对应版本就可以 2.Windows系统: (1)虚拟机: a.去下载Ubuntu对应版本的镜像(http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/ 可以更换其他源,下载ubuntu-16.04.6-desktop-amd64.iso即可) b.安装虚拟机:推荐VMware或者VirtualBox (2)双系统: a.下载一个Ubuntu镜像,通过工具将(PE)U盘做成启动盘 b.可百度搜索教程(坑可能较多。。) 三、ROS安装 1.更改一下配置

ros常用命令

烂漫一生 提交于 2019-12-25 22:56:17
在学习ros时经常忘记命令,现边看wiki的同时边系统整理一下常用的ros命令 关于工作环境 export | grep "某关键字“ //查看含某关键字的信息(即管道筛选) source /opt/ros/kinetic/setup.bash //每次打开终端时都需要先运行这条命令才能运行ros相关命令,为避免这一繁琐过程,通常都会事先在home/.bashrc文件中添加了这条命令 source devel/setup.bash //将当前终端临时加入到ros工作环境中,仅当前终端有效,新开或别的已经打开的终端中无效 echo $ROS_PACKAGE_PATH //查看ros包含的工作路径 注:setup.bash – Environment setup file for Bash shell setup.sh – Environment setup file for Bourne shell setup.zsh – Environment setup file for zshell ROS文件系统 rospack find [包名称] --返回包的路径信息 roscd [本地包名称[/子目录]] --直接接换工作目录到某个软件包集当中 roscd log --切换到ros保存日记文件的目录下 rosls [包名] --查看某指定包的内部文件情况 创建工作空间 mkdir -p

Unable to alter JSON variable within a function

半世苍凉 提交于 2019-12-25 18:59:20
问题 Altering a JSON variable is failing for following snippet: var data = {status: ''}; rosconnection.setOnOpen(function (e) { data.status = 'Succeeded'; alert('success'); }); rosconnection.setOnError(function (e) { data.status = 'Failed'; alert('fail'); }); data stays empty, but the alert gets called within rosconnection.setOnOpen . The error is hard to replicate hence its used on a ros connection , but i am 100% certain that it enters atleast one of the functions with success. 回答1: You didn't

How to attach and detach an external app with PyQT5 or dock an external application?

一个人想着一个人 提交于 2019-12-25 18:16:12
问题 I'm developing an GUI for multi-robot system using ROS, but i'm freezing in the last thing i want in my interface: embedding the RVIZ, GMAPPING or another screen in my application. I already put an terminal in the interface, but i can't get around of how to add an external application window to my app. I know that PyQt5 have the createWindowContainer, with uses the window ID to dock an external application, but i didn't find any example to help me with that. If possible, i would like to drag