本文主要介绍如何通过ROS使用角蜂鸟的基本示例教程。
该版本只适用于多模型api,如果角蜂鸟版本过低,请更新对应版本的固件。
操作系统 Ubuntu16.04下
下面给大家介绍配置ROS环境具体的执行过程
设置当前系统可接受ROS的包,并设置密钥。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
检查apt-get更新,安装ROS, rqt, rviz, and robot-generic libraries。
sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full
安装不上就科学上网一下
安装rosdep,rosdep为要编译的源代码安装系统依赖项,并且需要在ROS中运行一些核心组件。
sudo rosdep init
rosdep update
设置ROS环境变量到bashrc
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
如果不写在bashrc下,就需要每次在当前终端更新配置
source /opt/ros/kinetic/setup.bash
安装其它依赖包
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
参考链接ROS环境安装
下载SungemSDK-ROS,保证你的环境安装了git,如果没有安装,请参照百度经验ubuntu 安装git,git下来SungemSDK-ROS
git clone --recursive https://github.com/HornedSungem/SungemSDK-ROS.git
如果未执行过install.sh脚本文件,cd到该目录下,执行脚本文件
cd SungemSDK-ROS/src/SungemSDK/installer/Linux/
./install.sh
准备需要的资源文件,model及data文件,git最新SungemSDK-GraphModels,或从百度云盘中下载,并把该目录link或拷贝到系统下,如果不想放在系统下,你可以修改horned_sungem_launch/config目录下模型配置文件的graph_file_path和category_file_path参数,确保路径下能找到该文件即可。
git clone https://github.com/HornedSungem/SungemSDK-GraphModels.git
sudo cp -r <workspace>/SungemSDK-GraphModels /opt/SungemSDK-GraphModels
使用catkin编译生成build和devel文件
cd SungemSDK-ROS
catkin_make
执行source命令,依次执行文件中的语句,使刚修改的初始化文件生效
source devel/setup.bash
查看ROS包路径正确
echo $ROS_PACKAGE_PATH
/home/<user_name>/SungemSDK-ROS/src:/opt/ros/kinetic/share
提示: 如果开发者想在俩台机器上进行通信,需要保证在同一局域网下,并设置ROS_MASTER_URI和ROS_IP
查找主机IP地址,终端执行ifconfig
ifconfig
举例主机ip为192.168.50.201,在当前终端执行下列命令
export ROS_MASTER_URI=http://192.168.50.201:11311
export ROS_IP=192.168.50.201
配置完上述环境,下面就跟大家介绍下如何使用SungemSDK-ROS。 根据需求,我们提供了俩种模式:
使用usb摄像头:
如果没有配置ROS摄像头,需要先安装环境
sudo apt-get install ros-kinetic-usb-cam
示例:使用mobilenetssd进行检测
打开终端,加载nodelet
roslaunch horned_sungem_launch hs_camera.launch cnn_type:=mobilenetssd camera:=usb
如果出现错误,需cd到你的catkin工作空间的devel重新source下setup.bash。 打开新的终端,加载图像
roslaunch horned_sungem_launch hs_detection_example.launch camera_topic:="/usb_cam/image_raw"
注意:因为是使用的usb摄像头,不管模型的类型,camera_topic是固定的
使用角蜂鸟自带摄像头:
示例:下面介绍使用yolo模型进行检测
打开终端,加载nodelet,接受角蜂鸟360P的图像
roslaunch horned_sungem_launch hs_camera.launch cnn_type:=yolo camera:=hs pixels:=360
如果出现错误,需cd到你的catkin工作空间的devel重新source下setup.bash 打开新的终端,加载图像
roslaunch horned_sungem_launch hs_detection_example.launch camera_topic:="/hs/camera/image_raw"
在horned_sungem_launch文件夹下,你可以查看所有的launch文件,用于启动多个节点完成复杂需求,您可以根据您的项目需求,对其进行修改丰富,现在给大家介绍下launch文件里现有参数及其用法
注意: 参数声明都为小写
当前截图是在ubuntu16.0.4环境下,camera为hs,pixels为1080,cnn_type为yolo,截图比较仓促
opencv冲突错误:
如果想保持ROS和python环境可以共存,需要把.bashrc文件的source /opt/ros/kinetic/setup.bash这一行注释掉,否则调用python例子会报opencv引用类型错误问题 解决办法:
导入库错误:
该问题是libhs.so没有加载,首先确保该文件是否存在,在终端执行sudo ldconfig,另外解决办法就是更新最新版本的ROS库,使用submodule的形式将SungemSDK合并,不需要拷贝库文件到系统目录下
launch文件错误: 解决办法:终端执行source SungemSDK-ROS/devel/setup.bash
编译时错误: 解决办法:某些树莓派可能会出现参数错误的问题,在对应的CMakeLists.txt里删除对应参数即可