HandsFree OpenRE编译及烧录

说明


这是个悲伤的故事。。。。。
由于手贱,把HandsFree的底层控制板的USB-to-TTL的usb口搞坏了(焊盘没了+串口芯片烧了),所以为了让小车满血复活,需要改一下通信的串口号,编译工程在烧录进板子。幸好HandsFree的底层控制板留了很多通信的接口出来。。。。


OpenRE编译环境的搭建


首先我们先将OpenRE的代码下下来:

git clone https://github.com/HANDS-FREE/OpenRE.git

然后我们去百度去下载编译环境搭建需要几个软件:

软件百度云下载链接

下载好后我们拷贝到“ OpenRE-master/5_Development_Toolchain”下。就是我们刚下前面下载的OpenRE工程文件夹(我的文件夹名为“ OpenRE-master”)下的“ 5_Development_Toolchain”文件夹里。

接着运行以下指令:

$ sudo usermod -a -G dialout $USER   

$ sudo apt-get install lib32ncurses5 libtool libusb-1.0 libftdi-dev python python-serial python-empy libpython2.7:i386    

$ sudo apt-get remove modemmanager    

代码编译与烧写


1、由于我使用的handsfree小车为stone,所以我们选择stone的工程进行编译:

$ cd OpenRE-master/0_Project/firmware/handsfree_wheel_robot/linux

$ make

这样我们就编译完成了,如果你使用串口1进行通信,则只要把代码烧录到板子就可以用了,这样第2步就可以直接跳过。


2、这里因为我的串口1不能用,需要将通信的串口号改变,所以需要改一下“system_para.mk”文件。打开“system_para.mk”文件,找到以下代码:

ifeq "$(strip $(BOARD_TYPE))" "control_unit_v2"
####select the usartx for board debug info printf : usart_interface_x,usb_slave  
DEBUG_PRINTF_INTERFACE ?= usart_interface_1
####select the usartxfor pc communications (hf_link) : usart_interface_x,usb_slave 
PC_INTERFACE ?= usart_interface_1
####select the usartx for remote control (hf_link) : usart_interface_x  
RADIO_INTERFACE ?= usart_interface_4
endif

将“usart_interface_1”改成“usart_interface_6”。我这里选择串口6 进行通信,选择串口4也可以,串口2不行,因为被占用了。最后我们进行编译:

$ cd OpenRE-master/0_Project/firmware/handsfree_wheel_robot/linux

$ make

编译完成了后我们开始烧录。


3、我们使用handsfree配的jlink将程序烧录到板子中,jlink的模式为SWD模式。将jlink接到板子上的SWD口,同时给板子的供电。jlink烧写时,由于不同的电路板外部晶振频率可能不一样,所以把A板的固件烧到B板就可能导致死机和锁死,然后下一次烧写的时候就烧不进了,当出现这种情况的时候,方法就是按下板子的复位键(按住不动),运行烧写指令,一两秒后,松开复位键,就能烧写进去了。

为了确保你不会烧写错误,你先确保每个工程的makefile文件和你的板子是匹配的。makefile文件在“OpenRE-master/0_Project/makefile”目录下。

我们执行以下指令进行烧录:

$ cd OpenRE-master/0_Project/firmware/handsfree_wheel_robot/linux

$ make burn

烧录成功后可以听到板子的蜂鸣器叫了一声,然后有一个灯一直在闪。界面如下:

HandsFree OpenRE编译及烧录_第1张图片

如果你是用串口1 通信,则你讲USB线接到板子的USB1口,然后插上电脑,打开串口助手,选择你的USB口号和设置波特率为921600,然后点击链接板子。当你按下板子上的复位按键,你就可以在串口助手上看到收到的数据“\0x01\0xfeapp start”,这就表示通信也没问题了。

HandsFree OpenRE编译及烧录_第2张图片

以为我的串口1不能用了,所以直接接板子USB1的方法已经行不通,前面我已经将通信口换成了串口6,我们需要一个USB-to-TTL的通信板子自己接线到板子上预留的通信口,这样就可以通过串口6和电脑通信了。

注意:
1、USB-to-TTL的通信板子必须是支持高波特率的,如CP2102,FAT232。

2、板子上预留的串口6端子有5个角,如下图,我从左到右标号为1-5,1脚为GND,2脚为TXD,3脚为VCC,4脚为RXD,5脚为GND。我们需要将三个脚和USB-to-TTL的通信板子链接就可以通信。板子的1脚GND连USB-to-TTL的通信板的GND,板子的2脚TXD连USB-to-TTL的通信板的RXD,板子的4脚RXD连USB-to-TTL的通信板的TXD。

HandsFree OpenRE编译及烧录_第3张图片


测试


我们在电脑上启动handsfree小车的ROS节点:

$ roslaunch handsfree_hw handsfree_hw.launch

如果没问题的话会出现以下界面:

HandsFree OpenRE编译及烧录_第4张图片

然后我们在启动键盘控制节点就可以遥控我们的小车了。

roslaunch handsfree_hw keyboard_teleop.launch

具体的小车遥控教程可以去以下链接查看:

handsfree teleop

你可能感兴趣的:(ROS)