【Turtlebot2 ubuntu16.04部署sarl_ws】

Turtlebot2部署sarl_star

  • [一、ubuntu16.04 配置激光雷达RRPLIDAR-A3M1](#一、ubuntu16.04 配置激光雷达RRPLIDAR-A3M1)
  • [二 imu驱动razor_imu_m0_driver](#二 imu驱动razor_imu_m0_driver)
  • [三 键盘测试,以下建图时用](#三 键盘测试,以下建图时用)
  • [四 部署sarl_star](#四 部署sarl_star)
    • [4.1 环境安装](#4.1 环境安装)
    • [4.2 开始导航](#4.2 开始导航)
      • [4.2.1 启动imu](#4.2.1 启动imu)
      • [4.2.2 启动底盘](#4.2.2 启动底盘)
    • [4.2.3 建图:如果你用的是RPlidar,就跑吧,如果报错检查修改1](#4.2.3 建图:如果你用的是RPlidar,就跑吧,如果报错检查修改1)
      • [4.2.4 开始使用SARL*策略导航:](#4.2.4 开始使用SARL*策略导航:)
    • [4.3 关于自定义SARL*算法参数:](#4.3 关于自定义SARL*算法参数:)
  • 注意
  • 修改
  • realsense

项目网址链接: https://github.com/LeeKeyu/sarl_star
sudo apt-get install pyqt5-dev-tools python-pyqt5
rosdep install --from-paths src --ignore-src -r -y
必须用自己编译的,不要sudo apt

一、ubuntu16.04 配置激光雷达RRPLIDAR-A3M1

安装ROS选择鱼香ROS一键安装:

复制代码
 wget http://fishros.com/install -O fishros && . fishros

1、检查rplidar 的串行端口权限:

复制代码
ls -l /dev | grep ttyUSB
ls -l /dev | grep -E "ttyUSB|ttyACM"

2、添加写权限(如/dev/ttyUSB0)

复制代码
sudo chmod 666 /dev/ttyUSB0
  1. 将rplidar ros 包从Github上克隆到工作空间的src文件夹下

    sudo git clone https://github.com/robopeak/rplidar_ros不太行
    git clone https://github.com/Slamtec/rplidar_ros.git 用这个

    sudo apt-get install ros-kinetic-bfl
    sudo apt-get install ros-kinetic-tf2-sensor-msgs
    sudo apt-get install ros-kinetic-turtlebot ros-kinetic-turtlebot-apps ros-kinetic-turtlebot-interactions ros-kinetic-turtlebot-simulator ros-kinetic-kobuki-ftdi ros-kinetic-ar-track-alvar-msgs
    sudo apt-get install ros-kinetic-move-base-msgs

清理之前的编译文件

复制代码
rm -rf build/ devel/

打开~/sarl_star/src/rplidar_ros/sdk/src/sl_async_transceiver.cpp

找到第 204 行:

C++

复制代码
// 将原来的:
Result<nullptr_t> ans = SL_RESULT_OK;

// 改为:
Result<std::nullptr_t> ans = SL_RESULT_OK;

注意就是在 nullptr_t 前面加个 std::。

4、在工作空间编译功能包

复制代码
catkin_make

5、 有两种方法运行rplidar ros包

(1)在rviz中运行rplidar节点和视图

复制代码
source devel/setup.bash

roslaunch rplidar_ros view_rplidar_a3.launch

得等一会儿

二 imu驱动razor_imu_m0_driver

先用 roscore

复制代码
source devel/setup.bash
sudo chmod 666 /dev/ttyACM0
sudo ln -s /dev/ttyACM0 /dev/imu

由于imu是新换的,存在一些bug,需要重新插拔一下,插拔后运行如下命令:

复制代码
roslaunch razor_imu_m0_driver driver_node.launch
ctrl+c #即运行上面程序后,终止即可

验证点

复制代码
rospack list | grep razor_imu_m0_driver
rostopic list | grep imu
rostopic echo /mobile_base/imu_data

/home/zfy/turtlebot/src/razor_imu_m0_driver/launch/driver_node.launch

复制代码
  <arg name="port" default="/dev/imu" />

修改为:

复制代码
  <arg name="port" default="/dev//ttyACM0" />

三 键盘测试,以下建图时用

开启Kuboki底盘电源,将数据线插入电脑

打开一个新的终端窗口

复制代码
# 启动底盘
roslaunch turtlebot_bringup minimal.launch

此时小车底盘发出提示声音表示可以使用

打开第二个终端窗口

复制代码
# 启动键盘控制程序
roslaunch turtlebot_teleop keyboard_teleop.launch

此时可以使用键盘控制小车运动

复制代码
---------------------------
Moving around:
   u    i    o
   j    k    l
   m    ,    .

q/z : increase/decrease max speeds by 10%
w/x : increase/decrease only linear speed by 10%
e/c : increase/decrease only angular speed by 10%
space key, k : force stop
anything else : stop smoothly

四 部署sarl_star

4.1 环境安装

1有三个工程kobuki、rocon、turtlebot文件(其中包含sarl_star包),分别编译:

2 安装其他依赖

turtlebot、kobuki尽量用本地编译安装

复制代码
sudo apt-get install libbullet-dev
sudo apt-get install libsdl-image1.2-dev
sudo apt-get install libsdl-dev
sudo apt-get install ros-kinetic-bfl
sudo apt-get install ros-kinetic-serial
sudo apt-get install ros-kinetic-geographic-msgs
sudo apt-get install ros-kinetic-tf2-sensor-msgs
sudo apt-get install ros-kinetic-urg-node
sudo apt-get install ros-kinetic-kobuki-description
sudo apt-get install ros-kinetic-kobuki-node
sudo apt-get install ros-kinetic-kobuki-bumper2pc ros-kinetic-laptop-battery-monitor
sudo apt-get install ros-kinetic-joy
sudo apt-get install -y ros-kinetic-jsk-rviz-plugins
pip install empy==3.3.4 -i https://mirrors.aliyun.com/pypi/simple/
pip install configparser==3.5.0 -i https://mirrors.aliyun.com/pypi/simple/
pip install torch future -i https://mirrors.aliyun.com/pypi/simple/
pip install --upgrade pip==20.3.4 -i https://mirrors.aliyun.com/pypi/simple/
pip install gym==0.16.0 --no-deps -i https://mirrors.aliyun.com/pypi/simple/
pip install numpy==1.13.0 -i https://mirrors.aliyun.com/pypi/simple/

3 安装Python-RVO2:

复制代码
cd sarl_star/Python-RVO2/
pip install -r requirements.txt
python setup.py build
sudo python setup.py install

4 Install CrowdNav (Note that the CrowdNav in this repository are modified from the original SARL implementation):

复制代码
cd /home/zfy/sarl_ws/src/sarl_star/sarl_star_ros/CrowdNav
pip install 'gitpython==2.1.15' 'gitdb2==2.0.6' 'smmap2==3.0.1' 'smmap<3' -i https://mirrors.aliyun.com/pypi/simple/
pip install -e . --no-deps 

5 构建catkin工作空间

复制代码
cd ~/sarl_ws/
catkin_make
source devel/setup.bash

注意

sarl现在是有一个环境不兼容的问题。numpy版本需要1.13.0及以上,现在是1.11.0。从退出报错来看,这个算法是影响到costmap及相关的值。现在需要确定一下sarl和movebase之间的运行关系。

4.2 开始导航

4.2.1 启动imu

  • imu有问题,先插拔 imu,再启动驱动razor_imu_m0_driver:
    运行 bash 0imu.bash

    sudo chmod 666 /dev/ttyACM0
    sudo chmod 666 /dev/ttyUSB0
    sudo chmod 666 /dev/ttyUSB1
    source devel/setup.bash
    sudo ln -s /dev/ttyACM0 /dev/imu
    roslaunch razor_imu_m0_driver driver_node.launch

若不报错,ctrl+c删掉就行

4.2.2 启动底盘

起来底盘 nodelet manager,不要用默认的,用给的

运行 1dipan.bash

复制代码
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB1
source devel/setup.bash
sudo ln -s /dev/ttyACM0 /dev/imu
roslaunch turtlebot_bringup minimal.launch

验收点,新开一个终端

复制代码
rosnode list | grep mobile_base_nodelet_manager
rostopic echo /odom -n 1

4.2.3 建图:如果你用的是RPlidar,就跑吧,如果报错检查修改1

bash 2jiantu.bash

复制代码
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB1
source devel/setup.bash
roslaunch turtlebot_navigation rplidar_gmapping_movebase.launch 

然后用键盘远程作机器人探索环境并绘制地图。你可以在RVIZ中查看实时导航。

bash 3jianpan.bash

复制代码
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB1
source devel/setup.bash
roslaunch turtlebot_teleop keyboard_teleop.launch

保存地图,打开一个新的终端并运行:

bash 4cuntu.bash

复制代码
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB1
source devel/setup.bash
rosrun map_server map_saver -f /home/zfy/turtlebot/src/sarl_star/sarl_star_ros/map/new_map

建完图后杀死所有终端

4.2.4 开始使用SARL*策略导航:

要启动SARL*导航,请先运行

bash 5shoubing.bash

复制代码
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB1
source devel/setup.bash
roslaunch turtlebot_teleop xbox360_teleop.launch

再运行bash 6paotu.bash

复制代码
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB1
source devel/setup.bash
roslaunch sarl_star_ros sarl_star_navigation.launch

sudo apt-get update
sudo apt-get install --reinstall ros-kinetic-catkin

用以下命令进行测试

复制代码
rosrun rqt_graph rqt_graph #显示ROS节点之间的通信关系图。
rosrun rqt_publisher rqt_publisher #测试话题起作用

你会看到rviz窗口,实时显示机器人导航。在地图上绘制目标姿势(按照 ROS RVIZ 教程中的说明),机器人将使用 SARL* 策略导航,该策略会避开地图上的人类(蓝球)和静态障碍物,并根据全局规划动态更新其本地目标(红色立方体)。机器人的动作指令在rviz中可见为绿色箭头。

要使用原始的SARL策略进行导航,请执行:

复制代码
roslaunch sarl_star_ros sarl_original_navigation.launch

现在机器人走的不平滑,一抖一抖的

  • /home/zfy/turtlebot/src/sarl_star/turtlebot_apps/turtlebot_navigation/param/config/odom/costmap_common_params.yaml
  • /home/zfy/turtlebot/src/sarl_star/turtlebot_apps/turtlebot_navigation/param/dwa_local_planner_params.yaml

4.3 关于自定义SARL*算法参数:

强化语言参数可以在配置文件中的 sarl_star/sarl_star_ros/CrowdNav/crowd_nav/configs/ 中设置。

ROS导航参数通常定义在.xml和.yaml文件中(例如sarl_star/turtlebot_apps/turtlebot_navigation/param/config/odom/local_costmap_params.yaml)。要找到准确的配置文件并更改参数值,请查看所使用的启动文件。

本地目标设定法中的距离"d"默认为5米。可以通过将"dist_threshold"的值改为"d/2"来自定义sarl_star/导航/base_local_planner/src/goal_functions.cpp,具体取决于你想要的"d"。

注意

  • 注1. 检查 turtlebot_rviz_launchers 包中可用的 launch 文件
    打开终端,运行:

    rospack find turtlebot_rviz_launchers
    ls $(rospack find turtlebot_rviz_launchers)/launch/

    rostopic list看话题列表
    rostopic info /odom看话题具体信息
    rospack find razor_imu_m0_driver 找包
    roscd turtlebot_navigation/launch 找包位置

  • 注2 您可以使用以下命令在代码中搜索关键词,后面参数是文件夹

    grep -r "env_config" ~/sarl_ws/src/sarl_star/
    grep -r "time_limit" ~/sarl_ws/src/sarl_star/

  • 注3 如果该文件确实包含非法字符(如终端提示符),说明系统文件被意外修改。此时需要修复 ROS 安装:

    sudo apt-get update
    sudo apt-get install --reinstall ros-kinetic-catkin

    rosrun rqt_tf_tree rqt_tf_tree #显示ROS中的TF变换树(TF:坐标变换)
    rosrun rqt_graph rqt_graph #显示ROS节点之间的通信关系图。
    rosrun rqt_publisher rqt_publisher #测试话题起作用

修改

修改1 可能会变

  • /home/zfy/sarl_ws/src/sarl_star/turtlebot_apps/turtlebot_navigation/laser/driver/rplidar_laser.launch

  • /home/zfy/sarl_ws/src/sarl_star/rplidar_ros/launch/rplidar_a3.launch

    复制代码
    <param name="serial_port"         type="string" value="/dev/ttyUSB0"/>
    <param name="serial_baudrate"     type="int"    value="256000"/><!--A1/A2 -->

修改2

/home/zfy/Turtlebot/sarl_ws/src/sarl_star/turtlebot_apps/turtlebot_navigation/launch/rplidar_gmapping_movebase.launch

复制代码
  <!-- rviz -->
  <include file="$(find turtlebot_rviz_launchers)/launch/view_navigation.launch" />

修改3

复制代码
1 /home/zfy/sarl_ws/src/sarl_star/turtlebot_apps/turtlebot_navigati
2 on/param/local_costmap_params.yaml下/base_footprint去掉/
/home/zfy/sarl_ws/src/sarl_star/turtlebot_apps/turtlebot_navigation/param/global_costmap_params.yaml下/base_footprint去掉/

修改4

/home/zfy/sarl_ws/src/sarl_star/sarl_star_ros/launch/sarl_star_navigation.launch和/home/zfy/sarl_ws/src/sarl_star/sarl_star_ros/launch/sarl_original_navigation.launch下

复制代码
  <!-- Map server -->
  <arg name="map_file" default="/home/zfy/sarl_ws/src/sarl_star/sarl_star_ros/map/wangtong.yaml"/>

改为

复制代码
  <!-- Map server -->
  <arg name="map_file" default="$(find sarl_star_ros)/map/wangtong.yaml"/>
  new_map.yaml

  <!-- Define laser type-->
  <arg name="laser_type" default="hokuyo" />

改为

复制代码
<!-- Define laser type-->
<arg name="laser_type" default="rplidar" />

修改5

/home/zfy/sarl_ws/src/sarl_star/sarl_star_ros/scripts/sarl_original_node.py中

复制代码
model_dir = '/home/likeyu/sarl_ws/src/sarl_star/CrowdNav/crowd_nav/data/output/'
  env_config_file = '/home/likeyu/sarl_ws/src/sarl_star/CrowdNav/crowd_nav/data/output/env.config'
  policy_config_file = '/home/likeyu/sarl_ws/src/sarl_star/CrowdNav/crowd_nav/data/output/policy.config'

改为

复制代码
  model_dir = '/home/zfy/sarl_ws/src/sarl_star/CrowdNav/crowd_nav/data/output/'
  env_config_file = '/home/zfy/sarl_ws/src/sarl_star/CrowdNav/crowd_nav/data/output/env.config'
  policy_config_file = '/home/zfy/sarl_ws/src/sarl_star/CrowdNav/crowd_nav/data/output/policy.config'

/home/zfy/sarl_ws/src/sarl_star/sarl_star_ros/scripts/sarl_star_node.py

复制代码
    model_dir = '/sarl_star_ros/CrowdNav/crowd_nav/data/output/'
    env_config_file = '/sarl_star_ros/CrowdNav/crowd_nav/data/output/env.config'
    policy_config_file = '/sarl_star_ros/CrowdNav/crowd_nav/data/output/policy.config'

改为

复制代码
    # set file dirs
    model_dir = '/home/zfy/sarl_ws/src/sarl_star/sarl_star_ros/CrowdNav/crowd_nav/data/output/'
    env_config_file = '/home/zfy/sarl_ws/src/sarl_star/sarl_star_ros/CrowdNav/crowd_nav/data/output/env.config'
    policy_config_file = '/home/zfy/sarl_ws/src/sarl_star/sarl_star_ros/CrowdNav/crowd_nav/data/output/policy.config'

realsense

准备工作

复制代码
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
sudo apt-get update
sudo apt-get install librealsense2-dkms librealsense2-utils librealsense2-dev librealsense2-dbg
sudo apt-get install ros-kinetic-ddynamic-reconfigure

realsense.bash

复制代码
source devel/setup.bash
roslaunch realsense2_camera rs_rgbd.launch

rviz接入话题