rplidar跑cartographer


一、Cartographer編譯

cartographer依賴的大型第三方庫很少,編譯時基本沒有依賴項問題,基本按照官方文檔的步驟來,略作修改。使用的環境是Ubuntu16.04+ROS Kinetic

1.先裝好wstoolrosdep、ninja

  sudo apt-get install -y python-wstool python-rosdep ninja-build

2.建工作空間

  mkdir catkin_ws

  cd catkin_ws

  用wstool初始化一下

  wstool init src

  (不知道這種初始化方式和catkin_init_workspace有什么區別)

3.下載cartographer、cartographer_ros、ceres源碼

  官方提供的下載方式是用rosinstall file,但是里面ceres的git地址要科學上網,可以自己把三部分源碼下到 src 里就好,三部分地址https://github.com/googlecartographer/cartographer、https://github.com/googlecartographer/cartographer_ros、https://github.com/ceres-solver/ceres-solver。下載后都是最新的,也不用 wstool update -t src 這條了。

4.裝proto3

protobuf是谷歌的開源序列化框架(現在還不懂這是干什么的。。。)

catkin_ws/src/cartographer/scripts/install_proto3.sh  這個文件運行一下就可以了

5.安裝依賴項

  sudo rosdep init

  rosdep update

  rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

6.最后編譯

  catkin_make_isolated --install --use-ninja

  最后把環境變量寫到bash里

  vi .bashrc

  最后一行加上

   source ~/catkin_ws/install_isolated/setup.bash

7.跑一下官方demo試試

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag

roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

 

二、rplidar驅動安裝

https://github.com/robopeak/rplidar_ros 下載rplidar的ROS驅動,可以新建一個工作空間,用catkin_make 編譯一下即可;也可以放在cartographer的工作空間里 src 下,執行一下最后的catkin_make_isolated --install --use-ninja 即可。

1.開始使用前要設置一下USB口的權限

  ls -l /dev |grep ttyUSB

  sudo chmod 666 /dev/ttyUSB0

這樣每次插上rplidar都要設置一次,可以將權限寫在rules里(參考這個):

root權限新建文件 /etc/udev/rules.d/70-ttyusb.rules

寫入KERNEL=="ttyUSB[0-9]*", MODE="0666",保存,重新插上設備,在運行一次ls -l /dev |grep ttyUSB 查看權限,有兩個 rw 就可以了。

(感覺這樣寫的話或許北陽的激光插上也不用設置權限了)

2.運行一下試試

驅動里提供了三個launch文件,跑cartographer的話用 rplidar.launch 即可

  roslaunch rplidar_ros rplidar.launch

 

三、測試cartographer

  先要修改 launch 文件和 lua 文件,launch文件在 demo_revo_lds.launch 基礎上修改(跟其他教程學的)

  主要兩個地方,<remap from="scan" to="horizontal_laser_2d" />這一句后面的 horizontal_laser_2d 改成 scan (直接刪掉這一句應該也可以);最后的 playbag 節點刪掉。

  然后是lua文件,這個里面對參數的調整也會關系到出圖的效果,具體如何影響還在學習中,只想跑起來的話比較簡單,在revo_lds.lua 基礎上修改,tracking_frame  和 published_frame 這兩個改成 laser 就可以了。

  

(隨便放桌上運行了一下,為了截圖而已。。)

 

四、總結

  Linux的知識真的很欠缺,暑假才第一次用過Ubuntu,很多基礎的命令都不熟,特別是Linux下編譯程序是真挺麻煩的,對cmakelists文件了解太少,只能慢慢用到啥就去查,然后多做筆記。

  一開始沒搞明白ros里面幾個坐標系的轉換,雖然知道是tf 問題,但是 lua 文件老是設置不好,ROS的基礎知識還是要多看,特別是后面看源碼的話還是要有ros基礎的。

  cartographer的源碼要開始看了,現在只是對大體架構有了解,還是要深入了解,多半是個挺痛苦的過程吧,哈哈。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM