另一部分为选用部分,即universe部分,它不仅包括一些开源库的支持,如opencv,pcl,openni_kinect等,还有更上面以机器人功能模块命令的一些stack,例如pr2_doors,find_object,face recognition,grasp等等,真是一个丰富的宝藏,更详细的stack包可以在官网的StackList页面查询。(http://www.ros.org/wiki/StackList)
当然,除了随系统自动安装到我们客户端的那部分stack之外,当我们需要某特定功能的模块(如pr2_doors)时,此时,rosinstall就派上用场了,下面就简单以pr2_doors为例.
$ cp /opt/ros/diamondback/.rosinstall ~/stacks/pr2_doors.rosinstall //在stacks文件夹里面创建新的rosinstall文件
$ roslocate info pr2_doors >>~/stacks/pr2_doors.rosinstall //此句是自动寻找pr2_doors信息
命令执行到这儿,打开pr2_doors.rosinstall,可以看到:
$ rosinstall ~/stacks ~/stacks/pr2_doors.rosinstall
$ source ~/stacks/setup.bash //为防止每次使用启动后都要重新编译,可将相应地址添到~/.bashrc中
$ rosmake .......(pr2_doors里面所需的package文件)
订阅GPS消息,并将激光检测到的平面的位置和角度通过自定义消息类型发布出去;
这个任务可分为两个:订阅ROS标准类型的GPS消息;定义并发布自己的消息
1 .订阅ROS标准类型的GPS消息
符合ROS标准的gps消息类型为:sensor_msgs::NavSatFix ( http://docs.ros.org/api/sensor_msgs/html/msg/NavSatFix.htm )
图片中File这一行说明需要在头文件中#include <sensor_msgs/NavSatFix.h>;
(查看Compact Message Definition可以看到:消息包含的各数据成员以及它们的数据类型)
在接收信息的cpp中写一个gps_callback回调函数
并在main()中添加订阅:
此时,同样需要在CMakeLists.txt里添加订阅消息的执行文件并链接库:
这里的plane_fitting为可执行文件名,其中demo.cpp是订阅消息所在的cpp文件。
自定义消息类型,需要添加message_generation;
(2)接着添加上面我们在msg文件夹下创建的文件:
(3)添加依赖std_msgs,因为上面定义的距离distance消息属于ROS基础消息类型
至此,CMakeList.txt的修改告一段落。
保存并关闭。
定义类型为plane_fitting::articulated_angle的articulated消息:
并且将计算所得的两平面距离值分别赋值给msg文件中的distance和distance2,并将其用pub.publish发布出来,如下内容:
先这样,待日后业务有一定提升,再来修改......
安装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 https://raw.github.com/robotics-in-concert/rocon/indigo/rocon.rosinstall
$ source /opt/ros/indigo/setup.bash
$ rosdep install --from-paths src -i -y
$ catkin_make
$ mkdir ~/kobuki
$ cd ~/kobuki
$ wstool init src -j5 https://raw.github.com/yujinrobot/yujin_tools/master/rosinstalls/indigo/kobuki.rosinstall
$ source ~/rocon/devel/setup.bash
$ rosdep install --from-paths src -i -y
$ catkin_make
$ mkdir ~/turtlebot
$ cd ~/turtlebot
$ wstool init src -j5 https://raw.github.com/yujinrobot/yujin_tools/master/rosinstalls/indigo/turtlebot.rosinstall
$ 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)