ros+indigo+源码(ros开源项目)
本文目录一览:
- 1、如何编写ros的python程序
- 2、为什么.bashrc中export ros
- 3、ros indigo的source命令有什么作用
- 4、source /opt/ros/indigo/setup.bash是什么意思
- 5、ubuntu怎么按rosindigo
- 6、如何安装ros的turtlebot
如何编写ros的python程序
ROS Indigo beginner_Tutorials-10 编写 ROS 话题版的 Hello World 程序(Python版)
我使用的虚拟机软件:VMware Workstation 11
使用的Ubuntu系统:Ubuntu 14.04.4 LTS
ROS 版本:ROS Indigo
1. 前言 :
Hello world 程序,在我们编程界,代表学习某种语言编写的第一个程序。对于 ROS 机器人操作系统来说,这个 Hello World 程序就是 : 写一个简单的消息发布器(发送) 和 订阅器(接收)。
2. 准备工作 :
C++ 的程序都会存放在每个程序包的 src 文件夹里。 Python 不同,Python 程序都存放在 scripts 文件夹中, 反正意思都是 源文件 包。
Step 1 . 所以,先在 beginner_tutorials 软件包中创建一个 scripts 文件夹:
$ roscd beginner_tutorials$ mkdir scripts$ cd scripts123
3. 编写消息发布器节点程序:
如果你懒得去写的话,你可以使用 wget 命令, 在 github 上获取一个 talker.py 源代码。如何获取呢 ?
Step 2 . 开一个终端,输入下面的命令就可以获取 talker.py :
$ wget
-devel/rospy_tutorials/001_talker_listener/talker.py$ ls
talker.py123
但是我建议你亲自动手,写一写:手动创建一个 talker.py 文件在 /scripys 文件夹里:
$ roscd beginner_tutorials/scripts$ gedit talker.py12
将这上面链接里的代码手动输入到 talker.py 文件中。(我就不将代码贴上来了)
下面我来讲解一下代码:
Step 3 . 最后一步,给这个 talker.py 文件加上可执行权限:
$ chmod +x talker.py1
这样,一个发布器就编写完了。我们不要急着去运行它,现在我们编写一个订阅器,来接收这个发布器发布的话题:
4. 编写消息订阅器节点程序:
Step 4 . 和发布器一样,我们使用wget命令获取订阅器的源代码 listener.py:
$ roscd beginner_tutorials/scripts/$ wget
ials/indigo-devel/rospy_tutorials/001_talker_listener/listener.py$ ls
listener.py talker.py1234
但是,我还是建议你自己动手写一下。
好吧,下面我们开始讲解 listener.py 里面的代码,这个listener.py程序的代码简单:
Step 5 . 最后不要忘了给这个listener.py 加可执行权限:
$ chmod +x listener.py1
5. 运行 :
对于python 来说,我们不需要使用 catkin_make 命令对 ~/catkin_ws 工作空间进行编译。因为python文件本身就是可执行文件(前提是我们给它添加可执行权限)。
OK,发布器 和 订阅器 都创建完了。下面我们运行它们,看看效果:
Step 6 . 新打开一个终端,先执行 roscore 命令:
$ roscore1
Step 7 . 新打开一个终端,启动 发布器 :
$ rosrun beginner_tutorials talker.py 1
Step 8 . 新打开一个终端,启动 订阅器 :
$ rosrun beginner_tutorials listener.py 1
运行效果:
Step 9 . 我们来使用 rostopic list ,看看当前的话题有哪些:
$ rostopic list
/chatter
/rosout
/rosout_agg1234
其中 /chatter 就是我们在发布器里面发布的 ROS话题。
6. 扩展,编写一个启动脚本文件 :
还记得上一节,我们讲的ROS的启动脚本文件吧,下面我们来编写一个launch文件,来将 talker.py 和listener.py 文件的启动工作交个这个launch文件来做:
Step 10 . 来到 beginner_tutorials程序包的 /launch 路径下,新建一个 hello_world_topic.launch 文件:
$ roscd beginner_tutorials/launch$ gedit hello_world_topic.launch #使用你自己喜欢的文本编辑器12
Step 11 . 输入下面的代码:
launch
node pkg="beginner_tutorials" name="talker" type="talker.py" /
node pkg="beginner_tutorials" name="listener" type="listener.py" //launch1234
Step 12 . 现在,将之前打开的终端都关闭,我们启动这个脚本: (开一个终端 : Ctrl+Alt+T)
$ roslaunch beginner_tutorials hello_world_topic.launch1
运行结果:
上面截图的输出显示: talker.py 和 listener.py 脚本运行成功。但是并没有出现刷屏的现象。这是为什么? 为了证明这个脚本程序真的成功的运行了,我们来试一试:
Step 13 . 重新开一个终端,输入下面的命令:
$ rosrun list$ rostopic list$ rostopic echo /chatter123
Step 14 . 现在 Ctrl+C 结束监听 /chatter 话题。使用 rqt_graph 对当前启动的节点可视化:
$ rqt_graph1
这些足以说明,hello_world_topic.launch 启动脚本文件,启动成功。
总结: 发布器 和 订阅器 是很简单的, 就是简单的发布一个 自定义的话题。
我之前使用说过:节点之间通讯的方式有两种 : 话题(rostopic) 和 服务(rosservice)
所以,接下来,我们会讲:使用ROS服务来完成ROS版 Hello World 程序的例子。但是在这之前,我们需要学一学:如何创建自定义的ROS消息和ROS服务,以便 ROS 服务版的 Hello World 程序的编写。
所以下一讲,我们来学习:如何创建自定义的ROS消息和ROS服务。
为什么.bashrc中export ros
[html] view plain copy
source /opt/ros/indigo/setup.bash
###### kobuki_slam
source /opt/ros/indigo/setup.bash
source /home/yhzhao/catkin_ws/devel/setup.bash
source /home/yhzhao/hl_ws/devel/setup.bash
#export ROS_PACKAGE_PATH=~/catkin_ws/src:$ROS_PACKAGE_PATH
export ROS_PACKAGE_PATH=~/catkin_ws/src:~/hl_ws/src:$ROS_PACKAGE_PATH
export ROS_WORKSPACE=~/hl_ws/src
alias sbpi='ssh bananapi@192.168.1.102'
alias bpi_ros='export ROS_MASTER_URI= export ROS_HOSTNAME=192.168.1.123'
alias cdros='cd ~/catkin_ws/src'
declare -x TURTLEBOT_GAZEBO_MAP_FILE="/opt/ros/indigo/share/turtlebot_gazebo/maps/corridor.yaml"
declare -x TURTLEBOT_GAZEBO_WORLD_FILE="/opt/ros/indigo/share/turtlebot_gazebo/worlds/corridor.world"
export TURTLEBOT_BASE=kobuki
export TURTLEBOT_STACKS=nostack
export TURTLEBOT_3D_SENSOR=rplidar
###### slam_ws
source /opt/ros/indigo/setup.bash
source /home/yhzhao/slam_ws/devel/setup.bash
export ROS_PACKAGE_PATH=~/slam_ws/src:$ROS_PACKAGE_PATH
export ROS_WORKSPACE=~/slam_ws/src
#export ROS_HOSTNAME=192.168.1.111
#export ROS_IP=192.168.1.111
###### rgbd_slam
#source /opt/ros/indigo/setup.bash
#source /home/yhzhao/rgbdslam_ws/devel/setup.bash
#source /home/yhzhao/rgbdslam_ws/devel/setup.bash
#export ROS_PACKAGE_PATH=~/rgbdslam_ws/src:$ROS_PA#CKAGE_PATH
#export ROS_WORKSPACE=~/rgbdslam_ws/src
###### rtab_ws
#source /opt/ros/indigo/setup.bash
#source /home/yhzhao/slam_open_sources/ros_ws/devel/setup.bash
#export ROS_PACKAGE_PATH=/home/yhzhao/slam_open_sources/ros_ws/src:$ROS_PACKAGE_PATH
#export ROS_WORKSPACE=/home/yhzhao/slam_open_sources/ros_ws/src
#source ~/rosbuild_ws/setup.bash
在bashrc中进行上面设置的原因,主要是在每次启动终端时,加载ros的配置变量,不然基本的ros指令就无法识别,也找不到对应包..
source 可以认为它是读取每一个环境变量设置. 支持覆盖重载..
ros一般在apt-get 安装下是装在/opt/ros/indigo/ 下面的, 可以认为它只安装了头文件和基本库的 release版本, 如果我们需要下载对应的源码, 最好在home文件夹下,创建
自己的工作空间, 再编译. 按照source 的次序支持包覆盖.
ROS_PACKAGE_PATH ros包查找的路径.
ROS_WORKSPACE 工作路径 . roscd 对应的位置.
ros indigo的source命令有什么作用
ROS的stack库分作两部分,一部分为核心部分,即main部分,简而言之就是使用下面命令,安装ROS系统时就已经安装到我们用户电脑上的那部分。$sudoapt-getinstallros-diamondback-desktop-full另一部分为选用部分,即universe部分,它不仅包括一些开源库的支持,如opencv,pcl,openni_kinect等,还有更上面以机器人功能模块命令的一些stack,例如pr2_doors,find_object,facerecognition,grasp等等,真是一个丰富的宝藏,更详细的stack包可以在官网的StackList页面查询。(.bashrc中$rosmake.(pr2_doors里面所需的package文件)
source /opt/ros/indigo/setup.bash是什么意思
bash 是borne again shell的缩写,它是shell的一种,Linux上默认采用的是bash
当你在命令行中敲入bash命令时,相当于进入bash环境,如果本身就是bash环境,那么就是进入一个子bash环境(相当于开了一个子进程)。
ubuntu怎么按rosindigo
ubuntu怎么按rosindigo
如果你在移动机器人或者嵌入式,难免会用到ROS
现在我将教大家如何安装ROS Indigo版(ROS的版本有很多,我感觉这个indigo 在兼容性和功能包比较好)
如何安装ros的turtlebot
安装turtlebot的package以运行现成的代码。
原先hydro版本的ROS下turtlebot包只有一个turtlebot文件夹,这也是一个独立的工作空间,但是在indigo版本下的turtlebot包是三个组合工作空间分别是rocon、kobuki、turtlebot,这是三个并列同级的文件夹,这里涉及到工作空间的覆盖(overlay)问题。
如下步骤是从源码安装
1、安装前的准备
$ sudo apt-get install python-rosdep python-wstool ros-indigo-ros
$ sudo rosdep init
$ rosdep update123
2、安装rocon、kobuki、turtlebot
这三个是组合空间的关系,必须按照顺序安装
$ mkdir ~/rocon
$ cd ~/rocon
$ wstool init -j5 src
$ source /opt/ros/indigo/setup.bash
$ rosdep install --from-paths src -i -y
$ catkin_make
$ mkdir ~/kobuki
$ cd ~/kobuki
$ wstool init src -j5
$ source ~/rocon/devel/setup.bash
$ rosdep install --from-paths src -i -y
$ catkin_make
$ mkdir ~/turtlebot
$ cd ~/turtlebot
$ wstool init src -j5
$ source ~/kobuki/devel/setup.bash
$ rosdep install --from-paths src -i -y
$ catkin_make1234567891011121314151617181920
从上面的安装顺序以及依次source的setup.bash文件可以看出他们三个工作空间的层级关系。
3、环境设置
【kobuki平台】
# 设置udev规则使得电脑自动识别kobuki串口,无需每次用chmod赋权限$ . ~/turtlebot/devel/setup.bash $ rosrun kobuki_ftdi create_udev_rules# 如果你使用Kinect作为3D传感器就设置一下TURTLEBOT_3D_SENSOR$ echo "export TURTLEBOT_3D_SENSOR=kinect" ~/turtlebot/devel/setup.sh$ source ~/turtlebot/devel/setup.bash#将Turtlebot空间设置为默认空间,以后可以不用每次运行source命令$ echo "source ~/turtlebot/devel/setup.bash" ~/.bashrc12345678910
接下来说一下电池变量
# 运行turtlebot_dashboard查看Turtlebot运行状态$ roslaunch turtlebot_bringup minimal.launch$ roslaunch turtlebot_dashboard turtlebot_dashboard.launch# 如果看到上面面板上的笔记本电池能够显示电量就不用专门设置下面的电池环境变量了,如果无法正常显示电量的话需要设置以下变量$ echo "export TURTLEBOT_BATTERY=/proc/acpi/battery/BAT1" ~/turtlebot/devel/setup.sh$ source ~/turtlebot/devel/setup.bash123456
如果显示找不到/proc/acpi/battery/BAT1 说明电池文件不在这个位置
Linux内核版本= kernel 2.6的系统电池文件位置应该在/proc/acpi/battery/ 名字有可能是BAT0 或者BAT1
Linux内核版本是kernels 3.0+的系统,电池文件在/sys/class/power_supply/ 文件夹下,名字有可能是BAT0 或者BAT1 所以 TURTLEBOT_BATTERY=/sys/class/power_supply/BAT0 或者TURTLEBOT_BATTERY=/sys/class/power_supply/BAT1
最简单办法是在系统/ 目录下搜索BAT0 或者BAT1 文件,从而确认TURTLEBOT_BATTERY 的值
【create平台】
修改~/.bashrc文件,这样每次启动都将自动设置这些环境变量,否则每次都要用export命令逐个添加这些环境变量。
先打开.bashrc文件:
$ gedit ~/.bashrc1
再在文件末尾添加如下语句:
(我的移动机器人平台是turtlebot一代:IRobot Create+Kinect)
# For a source installationsource ~/turtlebot/devel/setup.bash# Export the turtlebot variablesexport TURTLEBOT_BASE=createexport TURTLEBOT_STACKS=circlesexport TURTLEBOT_3D_SENSOR=kinectexport TURTLEBOT_SERIAL_PORT=/dev/ttyUSB012345678
到这里就安装完成了。
可以以最小模式运行turtlebot机器人测试一下是否安装成功,如果环境变量配置正确,下面命令中的单词输入一部分之后按下Tab键是可以自动补全该单词的。
$ roslaunch turtlebot_bringup minimal.launch