# [筆記] 在 Linorobot 上安裝 GPS 驅動 > **此教學會說明如何在 Linorobot 中安裝 GPS 驅動程式** > > GPS 模組: ublox NEO-M8N > 使用裝置: NVIDIA Jetson Nano 4G > 作業系統: Ubuntu 18.04 LTS [(NVIDIA 提供的映像檔 ↗)](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write=) > 原文網址: https://hackmd.io/@EnderDragonEP/SJNo_m2cc > > (c) 崑山科技大學 光達實驗室 楊釋詠 > 2022/7/1 ## 安裝 nmea_navsat_driver 驅動 * 設定 sources.list,讓你的電腦能夠從 packages.ros.org 下載東西 [(資料來源 ↗)](http://wiki.ros.org/Installation/UbuntuARM) ```bash sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' ``` * 設定 apt-key PS. 如果沒有安裝 curl 可以執行指令 `sudo apt install curl` ```bash curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - ``` * 執行更新 ```bash sudo apt update ``` * 安裝依賴項目 ```bash sudo apt-get install ros-melodic-catkin-virtualenv \ ros-melodic-gps-common \ libgps-dev ``` * 從 Github 上面下載並安裝 nmea_navsat_driver ```bash cd ~/linorobot_ws/src git clone https://github.com/ros-drivers/nmea_navsat_driver.git cd .. catkin_make ``` <!-- ## uDev Rules 設定 * 依照 [(3.1 定義硬體名稱 ↗)](https://hackmd.io/@EnderDragonEP/LinoRobotSOP-by-KSU-EilidarLab?both=#31-%E5%AE%9A%E7%BE%A9%E7%A1%AC%E9%AB%94%E5%90%8D%E7%A8%B1) 來定義裝置的 uDev 名稱 * 插入 NEO-M8N,並設定裝置的 uDev 名稱為 `linogps` * 硬體都插入且定義名稱後按 Ctrl+C 結束並儲存 * 執行指令來儲存剛剛設定好的資料 ```bash sudo cp 58-lino.rules /etc/udev/rules.d ``` * 在執行指令重新載入 uDev 設定,**不要用 3.1 裡面用到的 `sudo service udev reload` 以及 `sudo service udev restart` 來重新啟動 uDev** ```bash sudo udevadm control --reload ``` * 然後確認一下名稱正確且有正確儲存 ```bash ls /dev/ | grep lino ``` 如圖 :  --> ## 修改 launch 文件 * 找到 GPS USB 裝置的位置,輸入指令 [(資料來源 ↗)](http://community.bwbot.org/topic/718/gps%E5%9C%A8ros%E4%B8%AD%E7%9A%84%E6%B5%8B%E8%AF%95%E5%92%8C%E4%BD%BF%E7%94%A8?) : ```bash dmesg --follow ``` * 將 GPS 的 USB 插入後可以看到下面訊息: ``` [ 706.382905] usb 1-2.3: new full-speed USB device number 10 using tegra-xusb [ 706.403852] usb 1-2.3: New USB device found, idVendor=1546, idProduct=01a8 [ 706.403859] usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 706.403863] usb 1-2.3: Product: u-blox GNSS receiver [ 706.403866] usb 1-2.3: Manufacturer: u-blox AG - www.u-blox.com [ 706.404897] cdc_acm 1-2.3:1.0: ttyACM2: USB ACM device ``` * 從上面的回傳範例可知,裝置的位置為`ttyACM2` * 使用 gedit 開啟 launch 檔案進行編輯 ```bash gedit ~/linorobot_ws/src/nmea_navsat_driver/launch/nmea_serial_driver.launch ``` * 將第五行後面的 `/dev/ttyUSB0` 改為 `/dev/ttyACM2` ```xml=5 <arg name="port" default="/dev/ttyACM2" /> ``` * 將第六行後面的 `4800` 改為該裝置的波特率(Baud rate) `9600` ```xml=6 <arg name="baud" default="9600" /> ``` ## 修改 Python 版本 * 修改 nmea_serial_driver 的 python 版本,否則跑的時候會出現問題 [(資料來源 ↗)](https://blog.csdn.net/lalsd/article/details/122016344) ```bash gedit ~/linorobot_ws/src/nmea_navsat_driver/scripts/nmea_serial_driver ``` * 將第一行的 `python3` 改為 `python2.7`,如下 ```python= #! /usr/bin/env python2.7 ``` ## 執行 * 設定 /dev/ttyACM2 權限。注意! 每次開機位置可能會變動,需要在使用 `dmesg --follow` 查詢 ``` sudo chmod -R 777 /dev/ttyACM2 ``` <!-- * 執行指令 ```bash rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM2 _baud:=9600 ``` --> * 執行 nmea_serial_driver.launch ```bash roslaunch nmea_navsat_driver nmea_serial_driver.launch ``` * 知道裝置位置後如果不改 launch 檔案也可以直接執行指令下面來啟動程式 ``` rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM2 _baud:=9600 ``` * _port:=`輸入裝置位置` * _baud:=`輸入波特率(Baud rate)` * 查看發布訊息 ```bash rostopic echo /fix ``` 訊息應該會如下圖所示 :  * 還沒定位到衛星的時候經緯度跟海拔都會顯示 `nan` * 翻譯 : * latitude → 緯度 * longitude → 經度 * altitude → 海拔 ## 設定裝置 uDev 暱稱 * 開啟 rules 規則設定檔案,執行下面指令 ``` sudo nano -l /etc/udev/rules.d/58-lino.rules ``` * 然後在最下方加入此設定值 [( 資料來源 ↗ )](https://blog.csdn.net/qq_41949066/article/details/112683489 ) ``` KERNEL==“ttyTHS1”, SUBSYSTEM==“tty”, MODE=“0666”, GROUP=“eilidar”, SYMLINK+=“linogps” ``` * KERNEL==“`輸入裝置位置,前段的 /dev/ 不需要加`” * GROUP=“`輸入 linux 的使用者名稱`” * SYMLINK+=“`uDev 暱稱,不須加 /dev/`” * 重新啟動 uDev,終端機中輸入下面指令 ```bash sudo service udev reload sudo service udev restart ``` * 確認 uDev 規則有正常運作,終端機中輸入下面指令 ```bash ls /dev/ | grep lino ``` --- **參考網址 :** * ROS 官方 說明頁面 : http://wiki.ros.org/nmea_navsat_driver * nmea_navsat_driver Github 連結 : https://github.com/ros-drivers/nmea_navsat_driver * 如何從 ROS 官方下載 packages : http://wiki.ros.org/Installation/UbuntuARM **其他參考連結 :** * http://community.bwbot.org/topic/718/gps%E5%9C%A8ros%E4%B8%AD%E7%9A%84%E6%B5%8B%E8%AF%95%E5%92%8C%E4%BD%BF%E7%94%A8 * https://blog.csdn.net/lalsd/article/details/122016344 * https://copyfuture.com/blogs-details/202205091325548707 * https://blog.csdn.net/p942005405/article/details/123002038 * https://autoware.readthedocs.io/en/feature-documentation_rtd/DevelopersGuide/PackagesAPI/sensing/scripts.html * https://blog.csdn.net/lalsd/article/details/122016344 * https://blog.csdn.net/q1070292175/article/details/81116566?depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1-81116566-blog-112374314.pc_relevant_multi_platform_whitelistv2 * https://github.com/ros-drivers/nmea_navsat_driver/issues/94 ###### tags: `ROS` `Linorobot` `GPS`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up