🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## **1. PC端软件** 配备的笔记本电脑已经完成了系统安装和编译环境设置的步骤。对于刚完成lilinux系统安装的PC机,第一次进入系统后,主目录为空,需要进行以下设置: ### **1.1 编译lili_robot软件** * 在PC机建立工作空间catkin_ws ~~~ $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/ $ catkin_make $ echo ~~~ * 下载代码到PC机 ~~~ $ cd ~/catkin_ws/src # 下载lili_robot软件包,这一步是从coding上克隆软件仓库,需要输入用户名:hit_0401@qq.com 密码:hit123456 $ git clone https://git.coding.net/lilirobot/lili_robot.git #安装rplidar ROS包 $ git clone https://github.com/robopeak/rplidar_ros.git #安装键盘控制ROS包 $ git clone https://github.com/Forrest-Z/teleop_twist_keyboard.git #修改~/.bashrc文件,增加下面一行 source /home/bothub/catkin_ws/devel/setup.bash #使能.bashrc $source ~/.bashrc ~~~ ### **1.2 免密码ssh方式登录树莓派系统** 在PC端远程登录树莓派系统,远程调试和部署lili_robot软件。 PC系统通过ssh服务与树莓派系统连接。若机器人树莓派系统的局域网IP是 192.168.1.101,则连接方式如下: * 配置SSH公钥——在PC端运行 ~~~ $ ssh-keygen ~~~ * 一直回车选择默认选项,会在~/.ssh 目录下生成id_rsa 和 id_rsa.pub 两个文件。将id_rsa.pub文件远程拷贝到车载系统中。 ~~~ $scp ~/.ssh/id_rsa.pub lilibot@192.168.1.101:/home/lilibot ~~~ * 配置车载端——远程登录车载系统 ~~~ $ ssh lilibot@192.168.1.101 $ cat id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys ~~~ 将 id_rsa.pub 的文件内容追加写入到远程计算机的~/.ssh/authorized_keys 文件,并修改文件权限。 这样配置完成后,远程ssh登录车载系统,无需密码。 ### **1.3 Roboware studio 远程开发配置** * 修改树莓派系统/etc/profile ssh远程登录以后,执行下面操作 ~~~ $ sudo su $ echo "source /opt/ros/kinetic/setup.bash" >> /etc/profile ~~~ 将ros环境变量信息写入/etc/profile文件 * 远程参数配置 首先在树莓派系统中建立工作空间,用于从PC上远程部署树莓派系统的ros代码 ~~~ mkdir -p ~/catkin_ws/src cd ~/catkin_ws wstool init src ~~~ 启动 RoboWare Studio 后,点击“远程参数配置”按钮,依次配置远程计算机 IP 地址、 远程计算机用户名、本地计算机密钥文件、远程计算机部署路径参数,如下所示。 ![Roboware远程参数配置](https://box.kancloud.cn/4fe7a5e3e5038d8609ba0d9bee8b0874_906x723.png) * 远程部署 在资源管理器视图下,选择“Remote Deploy”远程部署选项,点击列表左侧的按钮 进行远程部署。RoboWare Studio 会将当前整个工作区的源代码部署到远程计算机的指定路 径下(请参照上一节的“远程参数配置”进行远程部署路径的设置)。 ![远程部署](https://box.kancloud.cn/04e586d2a2ede23f6967e12f3e9a341a_899x709.png) * 远程构建 在资源管理器视图下,选择“Debug (remote)”构建选项,点击列表左侧的按钮进行远程构建。RoboWare Studio 会将构建指令发送到远程计算机,并在“输出”窗口显示构建信息。 ![远程构建](https://box.kancloud.cn/a6bc461bfec0ee427de0ea355fb614c1_716x132.png) 本地修改代码文件后,切记执行远程部署和远程构建这两步。 ## **1.4 PC端的遥控手柄配置** joy包是支持所有的Linux的操作手柄的一个包。这个包有一个用来作为操作手柄到ROS的接口的节点:joy_node.里面包含有操作手柄的按键和轴的信息。 这个驱动会论询可以读的端口,这个端口里会发布操作手柄的状态信息。如果这个端口关闭或者读取失败,它会重新打开该端口。操作手柄的轴的信息范围在[-1,1],按钮的为0是关闭,1是开。 安装joy包(提供的lilinux镜像文件里已经设置过了), ~~~ sudo apt-get install ros-kinetic-joy ~~~ 使用方法, * PC机器连接手柄(蓝牙或者有线) * 查看joy端口,确定端口的rw权限。如果没有,用chmod命令添加rw权限。 ~~~ ls /dev/input ~~~ 使用北通神鹰手柄时,只能看到js0 ~~~ ls -l /dev/input/jsX // X为数字,0或者1 chmod a+rw /dev/input/jsX ~~~ 在PC端,指定使用的端口,打开joy_node节点 ~~~ rosparam set joy_node/dev "/dev/input/jsX" rosrun joy joy_node ~~~ ## **1.5 树莓派的USB端口设置** 激光雷达通过usb端口连接到树莓派板子上;树莓派经过导航计算后,发送转速控制指令到usb连接的omnibase控制板。 树莓派运行的ubuntu系统,是按照插入的usb设备的先后顺序来定义端口名称的,例如ttyUSB0,ttyUSB1。插入设备的先后顺序不同,端口号也会随着发生变化。这时候可以用到udev规则,实现给在特定的USB端口上的特定设备一个自定义的设备文件链接。lili_robot软件包中已经写好了usb端口设置的脚本,指定了RPlidar A1雷达的端口(/dev/rplidarA1),以及omnibase控制板的usb端口(/dev/omnibase)。脚本udevinstall.sh内容如下: ~~~ #!/bin/bash # RPLidar echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout", SYMLINK+="rplidarA1"' >/etc/udev/rules.d/rplidar-a1.rules # STM32 Base echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="666", SYMLINK+="omnibase"' >/etc/udev/rules.d/stm32base.rules ~~~ 连接好雷达和omnibase控制板,ssh远程登录树莓派系统后,运行以上脚本; `$ sudo ./udevinstall.sh` 并重启udev服务,重启树莓派板子 ~~~ $ sudo /etc/init.d/udev restart $ sudo reboot ~~~ 在树莓派上运行以下命令,查看是否建立端口映射: ~~~ $ ls -l /dev |grep ttyUSB 正常会显示 lrwxrwxrwx 1 root root 7 2月 12 2016 omnibase -> ttyUSB0 lrwxrwxrwx 1 root root 7 7月 4 12:21 rplidarA1 -> ttyUSB1 crw-rw-rw- 1 root dialout 188, 0 2月 12 2016 ttyUSB0 crw-rw-rw- 1 root dialout 188, 1 7月 4 12:21 ttyUSB1 已经建立起端口映射关系 ~~~