1,ros工作空间的文件构成:
其中src下可以放多个功能包。为了方便管理可以在src下新建文件夹,再在文件夹下建多个功能包。
注意功能包的名字不要与ros自带的系统功能包重复。如果想删除功能包则需要用特定的命令来删除: sudo apt-get purge ros-indigo-**
2,launch文件一般放在功能包下,可以用include来条用其他功能包中的launch文件。
launch中arg 标签可以定义接收 launch的参数
launch中rosparm 可以定义 ros参数,保存到参数服务器中
$(eval xxx)可以执行python代码,让launch有灵活性
例如:表达式成立则运行XXX
<group if="$(eval 'true' if arg('input')=='run' else 'false')">
....xxx....
</group>
<remap from="scan" to="$(arg scan_topic)"/>:将名称为“scan"的接口重新映射成launch参数名为“scan_topic”的参数值
3,gmapping功能时,
将雷达名称修改成自己的实际名称;
odom_frame修改成自己的实际项目中用到的名称;
4,tf变换
ros中tf1升级为tf2,
from tf.broadcaster import TransformBroadcaster。。。。ros1
from tf2_ros import TransformBroadcaster 。。。。ros2
tf2引入了静态广播器,可以直接在launch中定义。
例如:
<node pkg="tf2_ros" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 1 link1_parent link1" />
linux系统操作技巧:
为安装好的程序设定桌面和系统应用快捷方式
在/usr/share/applications目录下创建自己的.desktop文件。并写入如下代码:
[Desktop Entry]
Name=pycharm
Exec=/home/pcname/PY/pycharm/bin/pycharm.sh
Icon=/home/pcname/PY/pycharm/bin/pycharm.png
Type=Application
其中Exec为安装应用程序目录
其中Exec为对应的图表目录
保存推出即可在系统应用中看到自己新安装的应用程序了。
5,navigation导航功能
以turtlebot3的仿真程序为例,
先安装turtlebot3(如没有安装gazebo,和navigation,则需先行安装):
sudo apt install ros-noetic-turtlebot3
sudo apt install ros-noetic-turtlebot3-simulations
sudo apt install ros-noetic-navigation
注意按照自己安装的ros版本来对应安装,此处以noetic的为例;
然后便可以启动仿真测试了。(具体参照:ROS2入门教程——31. 在Gazebo仿真环境中实现自主导航 - 古月居)此处不再赘述;
5.1navigation导航功能包主要launch介绍:
如上图中。
turtlebot3_navigation.launch可以启动与导航相关的所有功能包 ;
amcl.launch是一个包含自适应蒙特卡罗定位(AMCL)的各种参数设置的(上线参数);
move_base.launch是统筹运动规划参数设置的(加载各种配置 参数的launch);
5.2navigation导航功能包主要参数配置文件介绍:
各参数配置文件如下图:
base_local_planner_params.yaml
因为turtlebot3已将dwa_local_planner用作base_local_planner的设置值,因此在
此不使用。这是因为已经在move_base节点中更改了参数设置,如下所示:
<param name="base_local_planner" value="dwa_local_planner/DWAPlannerROS" />
costmap_common_params_burger.yaml是 Turtlebot3 Burger机器人的参数设定文件;
costmap_common_params_waffle.yaml是 Turtlebot3 waffle机器人的参数设定文件;
costmap_common_params_waffle_pi.yaml是 Turtlebot3 waffle_pi机器人的参数设定文件;
机器人的形状尺寸和安全距离都在上述中设定;
dwa_local_planner_params_burger.yaml是最终将移动速度命令传给机器人的功能包参数;
dwa_local_planner_params_waffle.yaml是最终将移动速度命令传给机器人的功能包参数;
dwa_local_planner_params_waffle_pi.yaml是最终将移动速度命令传给机器人的功能包参数;
机器人机动速度,包括最大最小运行速度/最大最小加速度等都在上述3个文件中设定;
global_costmap_params.yaml是 全局地图参数设定文件;
# 设置机器人底座框架/发布和更新周期等参数;
local_costmap_params.yaml是 局部地图参数设定文件;
# 机器人底座框架设置/发布和更新周期局部尺寸大小分辨率等参数设定;
move_base_params.yaml--统筹运动规划的move_base的参数设置文件;
# 向机器人底座发送速度命令的控制周期( Hz )和最小定位完成等参数设定;
5.3障碍距离与costmap值的关系
在导航中,基于固定地图(static map/用作占用区域(occupied area)/自由区域(free area)
和未知区域(unknown area)四种因素,计算障碍物区域、预计会和障碍物碰撞的区域以及机
器人可移动区域,这被称为成本地图(costmap);
障碍距离与costmap值的关系如下图:
000:机器人可以自由移动的free area(自由区域)
001~127:碰撞概率低的区域
128~252:碰撞概率高的区域
253~254:碰撞区域
255:机器人不能移动的占用区域(occupied area)