前言
Turtlebot2i是针对turtlebot2-arm版本的软件安装包,这里简单介绍一下它的的安装与变异,根据实际情况与官方教程有所不同。
硬件列表
Kubuki底座;sr300摄像头;astra摄像头;phantomx机械臂,工控机(这里我用了自己的笔记本代替)。
软件列表
系统:ubuntu16.03LTS(建议安装最新核的系统,本人系统核为4.13.0-32-generic,用uname -r命令查看,ubuntu14编译需要更改相关库文件以及部分lanuch文件)
Ros版本:ros-kinectic
软件包下载:https://github.com/Interbotix/turtlebot2i
软件包编译
参考:https://github.com/Interbotix/turtlebot2i/wiki/Full-Build-Instructions
- GTK安装
# sudo apt-get install build-essential libgtk-3-dev
- 安装源
# sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
- 添加key并更新
# sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
# sudo apt update && sudo apt upgrade
- ssh安装(远程控制)
# sudo apt install vino ssh gedit
修改参数,勾选“允许其他人查看您的桌面”,“允许其他用户控制您的桌面”,取消勾选“必须对本机器的每次访问进行确认”
# vino-preferences
- 安装ros-kinetic安装包
# sudo apt install git build-essential ros-kinetic-desktop
# sudo rosdep init
# rosdep update
# sudo apt install python-rosinstall
- Realsense安装包安装
原教程中需要更新系统核到4.0.4.10以上,如何核的版本在此以上则无需升级,直接安装:
# sudo apt install ros-kinetic-librealsense ros-kinetic-realsense-camera
安装过程中会报错,但是貌似不影响使用。
# sudo apt-get install libglfw3-dev
# cd librealsense
# mkdir build && cd build
# cmake ../
# cmake ../ -DBUILD_EXAMPLES=true
# make && sudo make install
# cd ..
# sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
# sudo udevadm control --reload-rules && udevadm trigger
# ./scripts/patch-realsense-ubuntu-xenial.sh
安装结束后可以测试demo,进入~/librealsense/build/examples/capture/目录,执行:
# ./rs-capture
- Turtlebot官方安装包安装
# sudo apt install ros-kinetic-turtlebot* libudev-dev ros-kinetic-find-object-2d ros-kinetic-rtabmap-ros ros-kinetic-moveit ros-kinetic-octomap-ros ros-kinetic-manipulation-msgs ros-kinetic-controller-manager python-wxgtk3.0
- Turtlebot2i包下载和编译
# source /opt/ros/kinetic/setup.bash
# cd ~
# mkdir -p ~/turtlebot2i/src
# cd ~/turtlebot2i/src
# git clone https://github.com/Interbotix/turtlebot2i.git .
# git clone https://github.com/Interbotix/arbotix_ros.git -b turtlebot2i
# git clone https://github.com/Interbotix/phantomx_pincher_arm.git
# git clone https://github.com/Interbotix/ros_astra_camera -b filterlibrary
# git clone https://github.com/Interbotix/ros_astra_launch
# cd ~/turtlebot2i
# catkin_make
- 修改shell环境变量
打开~/.bashrc文件,修改环境变量:
# gedit ~/.bashrc
添加以下内容:
# source /opt/ros/kinetic/setup.bash
# source /home/用户名/turtlebot2i/devel/setup.bash
# alias goros='source devel/setup.sh'
# export ROS_HOSTNAME=example.hostname
# export TURTLEBOT_3D_SENSOR=astra
# export TURTLEBOT_3D_SENSOR2=sr300
# export TURTLEBOT_BATTERY=None
# export TURTLEBOT_STACKS=interbotix
# export TURTLEBOT_ARM=pincher
最后source脚本文件:
# source ~/.bashrc
- 建立端口的udev规则
# sudo usermod -a -G dialout turtlebot
# cd ~/turtlebot2i/
# goros
# rosrun kobuki_ftdi create_udev_rules
# rosrun astra_camera create_udev_rules
# cd ~/turtlebot2i/src/turtlebot2i_misc
另外还需要建立机械臂端口的udev规则,这里与教程有所不同,教程中再次设定了底座的端口名,但是前面其实已经设定了,所以不需要再次设定,而且原教程的方法在我的电脑上不适用。这里介绍我自己的方法:
先打开99-turtlebot2i.rules规则文件:
# gedit 99-turtlebot2i.rules
插入arbotix机械臂控制板(控制板需要烧录固件,并且安装驱动,参照arbotix控制板使用),查看其端口名
# lsusb
其中的FT232端口即为arbotix驱动板的端口,查看usb名
# ls /dev -l
端口为ttyUSB0端口,底座端口为ttyUSB1,注意最好记录两者所插的USB口,两者端口插反的话有可能导致端口识别错误。
查看ttyUSB0端口的信息:
# udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)
找到对应的KERNELS(为第一个带有:的KERNELS的之后那个)2-1:
建立uedv规则:KERNELS=="2-1", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0777", SYMLINK+="arbotix"
复制到规则目录,重启规则:
# sudo cp ./99-turtlebot2i.rules /etc/udev/rules.d/
# sudo udevadm control --reload-rules && sudo service udev restart && sudo udevadm trigger
可以进行测试机械臂,连接电源,重接跳线帽,输入:
# arbotix_terminal
# ls
可以得到各个舵机的编号:1,2,3,4,5.....
- 测试demo
连接好底座,机械臂控制板(底座供电,注意usb口要保持保持一致接入),astra摄像头以及sr300摄像头。
测试demo:
打开端口输入:
# roscore
再输入:
# roslaunch turtlebot2i_bringup turtlebot2i_demo1.launch rviz:=true
得到: