在miniPC上部署ROS2 foxy

1420阅读 0评论2020-06-24 iibull
分类:其他平台

1.  rufus 烧写 ubuntu 2004 iso 的 usb 启动盘.
2.  安装 ubuntu 2004 iso 桌面版.
3.  设置更新源为 tsinghua
4.  系统设置    

点击(此处)折叠或打开

  1. -----------------------------
  2. sudo vi /etc/sudoers; 改为 %sudo   ALL=(ALL:ALL) NOPASSWD:ALL  ## 这一步你要确认是否真的要做.
  3. ----------------------------
  4. settings -> power [Blank Screen -> Never][Wifi save Power -> Off]
  5. ----------------------------
  6. sudo apt remove libreoffice-common libreoffice-core libreoffice-style-breeze      libreoffice-style-colibre     libreoffice-style-elementary  libreoffice-style-tango thunderbird thunderbird-gnome-support thunderbird-locale-en thunderbird-locale-en-us totem totem-common totem-plugins rhythmbox rhythmbox-data rhythmbox-plugin-alternative-toolbar rhythmbox-plugins simple-scan gnome-mahjongg aisleriot gnome-mines cheese transmission-common transmission-gtk gnome-sudoku deja-dup gnome-calendar shotwell shotwell-common evince evince-common gnome-todo usb-creator-common usb-creator-gtk gnome-screenshot eog yelp yelp-xsl gnome-font-viewer gnome-calculator ibus-data ibus-gtk ibus-gtk ibus-gtk3 ibus-table --purge; 
  7. sudo apt autoremove --purge
  8. 安装必要的开发环境
  9.     sudo apt install openssh-server samba vim git axel terminator xrdp htop bash-completion tree
  10.     sudo mkdir /work; sudo chown iibull:iibull /work; ln -s /work ~/work
  11.     sudo vi /etc/samba/smb.conf
  12.     sudo smbpasswd -a iibull
  13.     sudo service smbd restart
  14. 换种占用资源较少的桌面
  15.  sudo apt-get install gnome-session-flashback  重新登陆, 使用新的 gnome classic. 省 100MB RAM

  16. 部署远程桌面和虚拟桌面
  17. VNC桌面
  18.     settings->sharing->screen sharing -> [ON,allow connections,access require passwd]
  19. sudo apt install xrdp xbase-clients dconf-editor
  20. sudo dconf-editororg 设置 org -> gnome -> desktop -> remote-access 取消勾选requlre-encryption
  21. 命令行执行 gsettings set org.gnome.Vino require-encryption false ; gsettings set org.gnome.Vino use-upnp true
  22. 通过VNC viewer 或者 windows 远程桌面[vnc-any, ip, 5900, 密码] 可登陆.
  23. 虚拟桌面 - 无显示器登陆.
  24. sudo apt install x11vnc xvfb 
  25. 编辑虚拟桌面脚本 /usr/local/bin/fakevncscreen ### 然后 vnc viewer 通过 IP:9595 登陆.

点击(此处)折叠或打开 

  1. #smb.conf 内容
  2. [ROS]
  3.    comment = foxy
  4.    path = /work
  5.    create mask = 0700
  6.    valid users = iibull
  7.    write list = root, iibull

点击(此处)折叠或打开 - 虚拟桌面

  1. $ cat fakevncscreen
  2. #!/bin/bash

  3. while [ 1 ]; do
  4. xvfb_cnt=`pidof Xvfb`
  5. if [[ $xvfb_cnt -eq 0 ]]; then
  6.   Xvfb :95 -screen 0 1280x1024x16 &
  7.   sleep 2
  8. fi

  9. x11_cnt=`pidof x11vnc`
  10. if [[ $x11_cnt -eq 0 ]]; then
  11.   x11vnc -ncache 10 -listen 0.0.0.0 -rfbport 9595 -noipv6 -passwd wanglong -display :95 & #每次vncview退出后, 此程序也会退出.
  12. else
  13.   sleep 3
  14. fi

  15. done  
5.  安装 foxy, 今天 2020.06.23 ROS2放出了 Rolling Ridley 版本, 目前看是还是先用foxy,  TMD学习成本太高了.
    参照  

点击(此处)折叠或打开

  1. 最好有个VPN网络.
  2. sudo locale-gen en_US en_US.UTF-8
  3. sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
  4. export LANG=en_US.UTF-8
        //参考  使用清华的ROS2 源
  1. sudo apt update && sudo apt install curl gnupg2 lsb-release
  2. sudo sh -c '. /etc/lsb-release && echo "deb $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros2-latest.list'

  3. sudo apt update
  4. sudo apt install ros-foxy-desktop
  5. sudo apt install python3-argcomplete

  6. 验证
  7. source /opt/ros/foxy/setup.bash
  8. ros2 run demo_nodes_py listener

  9. source /opt/ros/foxy/setup.bash
  10. ros2 run demo_nodes_cpp talker
5. 部署开发环境

点击(此处)折叠或打开

  1. sudo apt update
  2. sudo apt install -y python3-rosdep libpython3-dev python3-argcomplete python3-colcon-common-extensions
  3. sudo rosdep init
  4. rosdep update
  5. rosdep install --from-paths /opt/ros/foxy/share --ignore-src --rosdistro foxy -y --skip-keys "console_bridge fastcdr fastrtps osrf_testing_tools_cpp poco_vendor rmw_connext_cpp rosidl_typesupport_connext_c rosidl_typesupport_connext_cpp rti-connext-dds-5.3.1 tinyxml_vendor tinyxml2_vendor urdfdom urdfdom_headers"
6. 部署工作空间

点击(此处)折叠或打开

  1. 建立如下目录结构
  2. cd /work/module_chassis/chassis/src
  3. ros2 pkg create big_bringup --build-type ament_cmake
  4. 产生结果
  5. iibull@MC:~/work/module_chassis/chassis/src$ tree .
    .
    └── big_bringup
        ├── CMakeLists.txt
        ├── include
        │   └── big_bringup
        ├── package.xml
        └── src
  6. 添加测试代码
  7. cd /work/module_chassis/chassis;
  8. rosdep install -i --from-path src --rosdistro foxy -y
  9. colcon build --packages-up-to big_bringup
  10. 产生 build  install  log  src. source install/setup.bash 是的环境生效.
7. 应用为发布模式
点击(此处)折叠或打开
  1. iibull@MC:~/work/module_chassis/chassis$ cat /etc/ROS2_ENV
  2. #!/bin/sh

  3. export ROS_DOMAIN_ID=91
  4. export ROS_LOCALHOST_ONLY=1  ##因为目前场景不需要分布式

  5. source /opt/ros/foxy/setup.bash
  6. source /work/module_chassis/chassis/install/setup.bash

  7. export GIT_SSL_NO_VERIFY=1
  8. export SLAM_MAP_DIR=/work/module_chassis/chassis/SlamMap
  9. export VP_CALLBACK_ECHO=everything_is_OK
  10. iibull@MC:~/work/module_chassis/chassis$

点击(此处)折叠或打开

  1. #添加到 .bashrc中

  2. source /etc/ROS2_ENV
  3. alias gw='cd /work/module_chassis/chassis'
  4. alias gs='cd /work/module_chassis/chassis/src'
  5. alias gm='cd /work/module_chassis/chassis && colcon build'
确认环境正确性 

点击(此处)折叠或打开

  1. iibull@MC:~$ printenv | grep ROS
  2. ROS_VERSION=2
  3. ROS_PYTHON_VERSION=3
  4. ROS_DOMAIN_ID=91
  5. ROS_LOCALHOST_ONLY=1
  6. ROS_DISTRO=foxy

好了, 节后移植送货机器人代码到 ROS2 foxy

忽然发现 ROS2很多库都没有移植上来, 包括 rplidar(可自行移植,比较简单), USB_Cam, ar_track_alvar, 奥比中光的估计够呛,  老外的用法很多用的是 ros1_bridge  ,  那么用ROS2的意义就不大了.

so so 想想还是kinetic吧. 





上一篇:ROS2 高级内容
下一篇:ARM 堆和栈(Heap & Stack)