这次的主要是openCR板子的配置,IP地址的配置
这次也会让咱的小车动起来
OpenCR依赖库的添加十分繁琐,所以有条件的小伙伴可以科学上网解决问题,如果没有靠谱的梯子,这里也有解决方法。
export OPENCR_PORT=/dev/ttyACM0
export OPENCR_MODEL=waffle (如果你的不是华夫,则把waffle改为burger)
rm -rf ./opencr_update.tar.bz2
wget https://github.com/ROBOTIS-GIT/OpenCR-Binaries/raw/master/turtlebot3/ROS1/latest/o pencr_update.tar.bz2 && tar -xvf opencr_update.tar.bz2 && cd ./opencr_update && ./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr && cd …
(这一句非常复杂,没错,这是一句话,别cv错了)
如果你是科学上网的,恭喜你,opencr已经配置完成了,如果不是,则参考下面很多方法(我试过没用不代表你用起来也没用,所以建议都试试。
1.把https改为http,我试过没用
2.把https改为git,我试过没用
3.通过arduino软件(这一步建议在Ubuntu系统操作,win10下面少了一个驱动)
(1) 下载arduino ide,版本越新越好,我有个同学就是直接下了个最新的,然后咻一下下到了opencr依赖库,虽然不排除是运气问题,但是还是版本越新越好
(2) 运行 IDE,点击 File(文件) → Preferences(首选项), 复制如下内容到Additional Boards Manager URLs()
https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/pac kage_opencr_index.json
(3) 通过 Boards Manager 安装 OpenCR 软件包 点击 Tools → Board → Boards Manager.
(4) 弹出窗口后,在文本框中键入 OpenCR 以查找包
当你做完,你有可能找到了Opencr库,当然不一定,如果还是找不到,说明你的网络真的没办法从这个地址下载到任何东西,这个时候,我们转变思路,把在线的东西先通过浏览器下载,然后在使用工具把本地文件转变为在线文件,方法如下
1.复制网址到浏览器打开
https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/pac kage_opencr_index.json
(这个是上面输入arduino的链接)
2.浏览器出现了一大堆代码,这是这个json文件的内容,这个时候把网页内容复制,然后新建文本,粘贴内容,并且命名为.json文件
3.在上述json文件中,有一个网址,这是在那堆代码里的,很好找,把这个网址复制下来,用浏览器打开,浏览器会下载一个bz2后缀的文件,保存(最好json文件和这个文件保存在一起,方便后续操作,最好路径没有中文)
4.下载hfs软件(这东西就叫hfs,是一个为本地文件提供虚拟链接的工具)
5.安装并打开,有很大概率你看不到这个软件,因为它藏起来了,在状态栏里可以找到它,双击唤醒,把上面两个文件拖到软件的左侧,在右侧会有两个文件的虚拟链接,这个时候重复
运行 IDE,点击 File(文件) → Preferences(首选项), 复制这两个链接,注意链接直接用回车分开到【Additional Boards Manager URLs()
点击 Tools → Board → Boards Manager.
在文本框中键入 OpenCR 以查找包
这个时候就能看到opencr了,如果还是看不见,就直接把别人配置好opencr的整个arduino文件夹给搬过来,也不是不行
至此,恭喜你已经配好了opencr依赖库,接下来是烧录
同样我们使用arduino ide,为opencr接上数据线,记住是opencr不是树莓派,我当时就接错了,白忙活半天
具体步骤
打开arduino,选择 Tools(工具) → DFU-UTIL,Tools → Board→选中opencr, Tools → Port → /dev/ttyACM0
(如果没有进入DFU都找不到端口,就是驱动有问题,可以百度一下)
运行 DFU 模式 OpenCR 上:按下【Reset 键】同时按下【Boot 键】,就能激活 DFU 模式,进入DFU模式后,在arduino的端口一项可能会出现端口连接丢失的情况,问题不大,接着做就行了
下载 bootloader Arduino IDE 中:点击 Tools → Burn Bootloader。在这一步,如果在win10下操作可能会提示无dfu驱动,我也不知道会不会出现问题,所以建议在ubuntu下操作。如果Ubuntu系统也提示没有驱动,就执行
echo 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main'
sudo apt-key adv --keyserver keys.gnupg.net --recv-key 6F3EFCDE
sudo apt-get update
sudo apt-get install dfu*
Arduino IDE 中:点击 Tools → Burn Bootloader。
必须要看到 file download successfully 才证明固件烧写成功
将 TurtleBot3 的程序烧录到 OpenCR 中:
如果 TurtleBot3 Burger, Arduino-->File → Examples → turtlebot3 → turtlebot3_burger → turtlebot3_core.
如果使用的是 TurtleBot3 Waffle 或者 Waffle Pi, Arduino--> File → Examples → turtlebot3 → turtlebot3_waffle → turtlebot3_core.
点击【上传】上传到 OpenCR 板。
烧写 arduino 程序时,必须要看到下面状态栏 输出“jump_to_fw”字样,才能 确定程序少写完成。
至此,完成程序烧写操作,这个时候如果烧写成功,轮子会抱死,用遥控器遥控,车子会动
最后是IP地址的配置
这一步非常简单,但是如果是用手机热点等提供网络的话,需要每一次操作前查看IP地址是否发生变化(为了安全,建议每一次操作前都看一看,我当初吃过不少亏)
分别在 turtlebot 和 PC,执行如下命令获得对应的 IP 地址:
ifconfig
修改.bashrc:
gedit ~/.bashrc
在最下面添加 turtlebot3 的 IP 地址: (树莓派端)
ROS_MASTER_URI = http://【PC 的 IP 地址】:11311
ROS_HOSTNAME = 【树莓派的 IP】
PC 配置如下:
ROS_MASTER_URI = http://【PC 的 IP 地址】:11311
ROS_HOSTNAME = 【PC 的 IP】
修改完成,记得让环境生效,在两端都执行
source ~/.bashrc
接着检查是否配置到位,在PC端运行
roscore
保持窗口
在树莓派执行
rostopic list
如果配置成功,可以看到节点,如果出现无法
ERROR:Unable to communicate with master
表示连接出问题,在保证自己的IP没输错后,基本是防火墙的问题
查看防火墙状态
sudo ufw status
inactive状态是防火墙关闭状态 active是开启状态 ,如果是active,则关闭
sudo ufw disable
重新执行
rostopic list
正常来说可以看到节点,如果还是不行,就是自己的路由器或者板子出了问题,没办法了