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
-
将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.bashsudo 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-catkinrosrun 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接入话题