企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **1. PC端软件** 配备的u盘系统已经完成了系统安装和编译环境设置的步骤。 **对于刚完成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 #安装键盘控制ROS包 $ git clone https://github.com/Forrest-Z/teleop_twist_keyboard.git #拷贝ROS源码到src目录 #安装navigation包和slam-gmapping包 sudo apt-get install ros-kinetic-navigation sudo apt-get install ros-kinetic-slam-gmapping #修改~/.bashrc文件,增加下面一行 source /home/lili/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远程参数配置](images/roboware_remote.png) * 远程部署 在资源管理器视图下,选择“Remote Deploy”远程部署选项,点击列表左侧的按钮 进行远程部署。RoboWare Studio 会将当前整个工作区的源代码部署到远程计算机的指定路 径下(请参照上一节的“远程参数配置”进行远程部署路径的设置)。 ![远程部署](images/remote_deploy.png) * 远程构建 在资源管理器视图下,选择“Debug (remote)”构建选项,点击列表左侧的按钮进行远程构建。RoboWare Studio 会将构建指令发送到远程计算机,并在“输出”窗口显示构建信息。 ![远程构建](images/remote_debug.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 # YDLidar echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout", SYMLINK+="lidar"' >/etc/udev/rules.d/rplidar-a1.rules # STM32 Base echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="666", SYMLINK+="base"' >/etc/udev/rules.d/stm32base.rules service udev reload sleep 2 service udev restart ~~~ 连接好雷达和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 base -> ttyUSB0 lrwxrwxrwx 1 root root 7 7月 4 12:21 lidar -> 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 已经建立起端口映射关系 ~~~