一、实验前期准备
因为校赛和电赛的控制题或多或少都需要视觉端的传感器实现,Jetson Nano是作者刚接触不久。在串口通信和开机自启动python文件方面需求大,所以花了好久攻克。
其实需要额外准备的就只有一个CH430的串口。
在这里首先感谢 Jetson nano开机自启动程序 以及 Jetson nano开机自启动python程序 这两篇文章的作者,大家也可以参考这两篇文章,结合着做实验。
二、具体流程
1.创建.sh文件
首先现在命令行输入
touch start.sh
start 文件名可替换,文件创建的路径建议保存在
/home/jetson
jetson是Jetson Nano的用户名,根据自己的设备进行更改。
2.写文件
以打开USB摄像头为例
#!/bin/bash
echo “password” | cd /home/jetson/Desktop/pydocuments/opencv/python opencv_serial.py
“password”是你们的密码,博主已经通过其他途径省去了输入密码的过程。
PS:有些博主用的是“python3 ...” 但是作者测试过如果写“python3”有时候开机会报错,显示python3.6运行不了,这里我也不知道是什么问题,所以直接用"python"替代。另外这个cd指令也是打开文件存储的绝对路径,大家自行更改。
3.赋予权限
如果不给文件赋予权限,那么也会开机报错。具体报错参考关于jetson nano上开机自启动shell脚本程序的设置问题 。
所以需要输入
sudo chmod a+x start.sh
4.设置开机自启
按键盘“Win”打开搜索框,搜索上述图片红框的“startup applications”,点击打开
点击屏幕右上角的锁,解锁,然后开启自动登录(上图红框所示)
接着来到这个页面,"name"项可以自己随便取,
”command“ 项输入下列:
gnome-terminal -x /home/jetson/start.sh
点击保存(save),
然后打开命令窗输入
sudo reboot
重启Jetson
最后的效果是这样的,作者的py文件是打开摄像头,一般如果你成功完成了以上所有步骤,正常的重启后会跳出命令窗。
三、问题和测试手段
1.作者遇到最头疼、最耗时的就是好多次重启后命令窗闪退。重试了好多次后,才找到了问题。py文件是否语法正确!!!如果你的py文件语法不正确,那么它就会闪退。作者遇到的情况是,py文件里的注释里有中文,会跳如下错误:
SyntaxError: Non-ASCII character \xe4 in file opencv_serial.py on line 21, but no encoding declared;
经过csdn的大佬的文章帮助,我知道了这是因为py文件里有不能用ASCLL码的字符,如果要保留这些字符,必须输入下列代码:
#coding=utf-8
放在这个文件的最开头,没错他就是注释,因为报错也是注释里有中文。
2.当我们实在是不知道问题出在哪里的时候,我们可以在命令窗输入:
bash start.sh
来测试文件运行是否正常。
四、结语
作为新人博主,读者有任何问题欢迎指出。这里要感谢CSDN的大佬分享的关于这方面的知识。